Skip to content

Commit

Permalink
Add an opaque parameter to for_each_ti_cb
Browse files Browse the repository at this point in the history
  • Loading branch information
mahkoh committed Jul 31, 2016
1 parent 1613d92 commit 0ca9b1d
Show file tree
Hide file tree
Showing 10 changed files with 37 additions and 24 deletions.
17 changes: 10 additions & 7 deletions cmus.c
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,8 @@ static int save_playlist_cb(void *data, struct track_info *ti)
return 0;
}

static int do_cmus_save(for_each_ti_cb for_each_ti, const char *filename, save_tracks_cb save_tracks)
static int do_cmus_save(for_each_ti_cb for_each_ti, const char *filename,
save_tracks_cb save_tracks, void *opaque)
{
int fd, rc;

Expand All @@ -222,19 +223,21 @@ static int do_cmus_save(for_each_ti_cb for_each_ti, const char *filename, save_t
fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0666);
if (fd == -1)
return -1;
rc = for_each_ti(save_tracks, &fd);
rc = for_each_ti(save_tracks, &fd, opaque);
close(fd);
return rc;
}

int cmus_save(for_each_ti_cb for_each_ti, const char *filename)
int cmus_save(for_each_ti_cb for_each_ti, const char *filename, void *opaque)
{
return do_cmus_save(for_each_ti, filename, save_playlist_cb);
return do_cmus_save(for_each_ti, filename, save_playlist_cb, opaque);
}

int cmus_save_ext(for_each_ti_cb for_each_ti, const char *filename)
int cmus_save_ext(for_each_ti_cb for_each_ti, const char *filename,
void *opaque)
{
return do_cmus_save(for_each_ti, filename, save_ext_playlist_cb);
return do_cmus_save(for_each_ti, filename, save_ext_playlist_cb,
opaque);
}

static int update_cb(void *data, struct track_info *ti)
Expand Down Expand Up @@ -268,7 +271,7 @@ void cmus_update_lib(void)

data = xnew0(struct update_data, 1);

lib_for_each(update_cb, data);
lib_for_each(update_cb, data, NULL);

job_schedule_update(data);
}
Expand Down
10 changes: 6 additions & 4 deletions cmus.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ enum file_type {
typedef int (*track_info_cb)(void *data, struct track_info *ti);

/* lib_for_each, lib_for_each_filtered, pl_for_each, play_queue_for_each */
typedef int (*for_each_ti_cb)(track_info_cb cb, void *data);
typedef int (*for_each_ti_cb)(track_info_cb cb, void *data, void *opaque);

/* lib_for_each_sel, pl_for_each_sel, play_queue_for_each_sel */
typedef int (*for_each_sel_ti_cb)(track_info_cb cb, void *data, int reverse);
Expand All @@ -54,7 +54,8 @@ typedef int (*for_each_sel_ti_cb)(track_info_cb cb, void *data, int reverse);
typedef void (*add_ti_cb)(struct track_info *, void *opaque);

/* cmus_save, cmus_save_ext */
typedef int (*save_ti_cb)(for_each_ti_cb for_each_ti, const char *filename);
typedef int (*save_ti_cb)(for_each_ti_cb for_each_ti, const char *filename,
void *opaque);

int cmus_init(void);
void cmus_exit(void);
Expand All @@ -75,8 +76,9 @@ enum file_type cmus_detect_ft(const char *name, char **ret);
void cmus_add(add_ti_cb, const char *name, enum file_type ft, int jt,
int force, void *opaque);

int cmus_save(for_each_ti_cb for_each_ti, const char *filename);
int cmus_save_ext(for_each_ti_cb for_each_ti, const char *filename);
int cmus_save(for_each_ti_cb for_each_ti, const char *filename, void *opaque);
int cmus_save_ext(for_each_ti_cb for_each_ti, const char *filename,
void *opaque);

void cmus_update_cache(int force);
void cmus_update_lib(void);
Expand Down
5 changes: 3 additions & 2 deletions command_mode.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,8 @@ void view_load(int view, char *arg)
}
}

static void do_save(for_each_ti_cb for_each_ti, const char *arg, char **filenamep, save_ti_cb save_ti)
static void do_save(for_each_ti_cb for_each_ti, const char *arg, char **filenamep,
save_ti_cb save_ti)
{
char *filename = *filenamep;

Expand All @@ -184,7 +185,7 @@ static void do_save(for_each_ti_cb for_each_ti, const char *arg, char **filename
return;
}

if (save_ti(for_each_ti, filename) == -1)
if (save_ti(for_each_ti, filename, NULL) == -1)
error_msg("saving '%s': %s", filename, strerror(errno));
}

Expand Down
6 changes: 4 additions & 2 deletions lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -684,12 +684,14 @@ static int do_lib_for_each(int (*cb)(void *data, struct track_info *ti), void *d
return rc;
}

int lib_for_each(int (*cb)(void *data, struct track_info *ti), void *data)
int lib_for_each(int (*cb)(void *data, struct track_info *ti), void *data,
void *opaque)
{
return do_lib_for_each(cb, data, 0);
}

int lib_for_each_filtered(int (*cb)(void *data, struct track_info *ti), void *data)
int lib_for_each_filtered(int (*cb)(void *data, struct track_info *ti),
void *data, void *opaque)
{
return do_lib_for_each(cb, data, 1);
}
6 changes: 4 additions & 2 deletions lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,10 @@ int lib_remove(struct track_info *ti);
void lib_clear_store(void);
void lib_reshuffle(void);
void lib_set_view(int view);
int lib_for_each(int (*cb)(void *data, struct track_info *ti), void *data);
int lib_for_each_filtered(int (*cb)(void *data, struct track_info *ti), void *data);
int lib_for_each(int (*cb)(void *data, struct track_info *ti), void *data,
void *opaque);
int lib_for_each_filtered(int (*cb)(void *data, struct track_info *ti),
void *data, void *opaque);

struct tree_track *lib_find_track(struct track_info *ti);
struct track_info *lib_set_track(struct tree_track *track);
Expand Down
4 changes: 2 additions & 2 deletions pl.c
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ void pl_reshuffle(void)
shuffle_list_reshuffle(&pl_shuffle_root);
}

int pl_for_each(int (*cb)(void *data, struct track_info *ti), void *data)
int pl_for_each(int (*cb)(void *data, struct track_info *ti), void *data, void *opaque)
{
struct simple_track *track;
int rc = 0;
Expand All @@ -149,7 +149,7 @@ int pl_for_each(int (*cb)(void *data, struct track_info *ti), void *data)

void pl_exit(void)
{
cmus_save(pl_for_each, pl_autosave_filename);
cmus_save(pl_for_each, pl_autosave_filename, NULL);
}

struct searchable *pl_get_searchable(void)
Expand Down
2 changes: 1 addition & 1 deletion pl.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ struct track_info *pl_activate_selected(void);
void pl_add_track(struct track_info *track_info, void *opaque);
void pl_sel_current(void);
void pl_reshuffle(void);
int pl_for_each(int (*cb)(void *data, struct track_info *ti), void *data);
int pl_for_each(int (*cb)(void *data, struct track_info *ti), void *data, void *opaque);

struct searchable *pl_get_searchable(void);
unsigned int pl_playing_total_time(void);
Expand Down
3 changes: 2 additions & 1 deletion play_queue.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ struct track_info *play_queue_remove(void)
return info;
}

int play_queue_for_each(int (*cb)(void *data, struct track_info *ti), void *data)
int play_queue_for_each(int (*cb)(void *data, struct track_info *ti),
void *data, void *opaque)
{
struct simple_track *track;
int rc = 0;
Expand Down
3 changes: 2 additions & 1 deletion play_queue.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ void play_queue_init(void);
void play_queue_append(struct track_info *ti, void *opaque);
void play_queue_prepend(struct track_info *ti, void *opaque);
struct track_info *play_queue_remove(void);
int play_queue_for_each(int (*cb)(void *data, struct track_info *ti), void *data);
int play_queue_for_each(int (*cb)(void *data, struct track_info *ti),
void *data, void *opaque);

#endif
5 changes: 3 additions & 2 deletions ui_curses.c
Original file line number Diff line number Diff line change
Expand Up @@ -2350,8 +2350,9 @@ static void exit_all(void)
server_exit();
cmus_exit();
if (resume_cmus)
cmus_save(play_queue_for_each, play_queue_autosave_filename);
cmus_save(lib_for_each, lib_autosave_filename);
cmus_save(play_queue_for_each, play_queue_autosave_filename,
NULL);
cmus_save(lib_for_each, lib_autosave_filename, NULL);

pl_exit();
player_exit();
Expand Down

0 comments on commit 0ca9b1d

Please sign in to comment.