X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/4190a4d995970b1897e43693546a6201a52e9059..8c3487524048510e3de4c8fbe90dc7f8cdc35858:/disobedience/queue.c diff --git a/disobedience/queue.c b/disobedience/queue.c index ecfc9e6..8ff6b6f 100644 --- a/disobedience/queue.c +++ b/disobedience/queue.c @@ -94,6 +94,15 @@ static GtkWidget *column_length(const struct queuelike *ql, const struct queue_entry *q, const char *data); static int draggable_row(const struct queue_entry *q); +static void recent_changed(const char *event, + void *eventdata, + void *callbackdata); +static void added_changed(const char *event, + void *eventdata, + void *callbackdata); +static void queue_changed(const char *event, + void *eventdata, + void *callbackdata); static const struct tabtype tabtype_queue; /* forward */ @@ -1362,8 +1371,10 @@ static struct queue_menuitem queue_menu[] = { * We monitor pause/resume as well as whether the track is playing in order to * keep the time played so far up to date correctly. See playing_completed(). */ -static void playing_update(void attribute((unused)) *v) { - D(("playing_update")); +static void playing_changed(const char attribute((unused)) *event, + void attribute((unused)) *evendata, + void attribute((unused)) *callbackdata) { + D(("playing_changed")); gtk_label_set_text(GTK_LABEL(report_label), "updating playing track"); disorder_eclient_playing(client, playing_completed, 0); } @@ -1374,8 +1385,9 @@ GtkWidget *queue_widget(void) { /* Arrange periodic update of the so-far played field */ g_timeout_add(1000/*ms*/, adjust_sofar, 0); /* Arrange a callback whenever the playing state changes */ - register_monitor(playing_update, 0, DISORDER_PLAYING|DISORDER_TRACK_PAUSED); - register_reset(queue_update); + event_register("playing-changed", playing_changed, 0); + event_register("pause-changed", playing_changed, 0); + event_register("queue-changed", queue_changed, 0); /* We pass choose_update() as our notify function since the choose screen * marks tracks that are playing/in the queue. */ return queuelike(&ql_queue, fixup_queue, choose_update, queue_menu, @@ -1387,8 +1399,10 @@ GtkWidget *queue_widget(void) { * Called when a track is added to the queue, removed from the queue (by user * cmmand or because it is to be played) or moved within the queue */ -void queue_update(void) { - D(("queue_update")); +void queue_changed(const char attribute((unused)) *event, + void attribute((unused)) *eventdata, + void attribute((unused)) *callbackdata) { + D(("queue_changed")); gtk_label_set_text(GTK_LABEL(report_label), "updating queue"); disorder_eclient_queue(client, queuelike_completed, &ql_queue); } @@ -1426,7 +1440,9 @@ static struct queue_menuitem recent_menu[] = { /** @brief Create the recently-played list */ GtkWidget *recent_widget(void) { D(("recent_widget")); - register_reset(recent_update); + event_register("recent-changed", + recent_changed, + 0); return queuelike(&ql_recent, fixup_recent, 0, recent_menu, maincolumns, NMAINCOLUMNS); } @@ -1435,8 +1451,10 @@ GtkWidget *recent_widget(void) { * * Called whenever a track is added to it or removed from it. */ -void recent_update(void) { - D(("recent_update")); +static void recent_changed(const char attribute((unused)) *event, + void attribute((unused)) *eventdata, + void attribute((unused)) *callbackdata) { + D(("recent_changed")); gtk_label_set_text(GTK_LABEL(report_label), "updating recently played list"); disorder_eclient_recent(client, queuelike_completed, &ql_recent); } @@ -1455,7 +1473,7 @@ static struct queue_menuitem added_menu[] = { /** @brief Create the newly-added list */ GtkWidget *added_widget(void) { D(("added_widget")); - register_reset(added_update); + event_register("added-changed", added_changed, 0); return queuelike(&ql_added, 0/*fixup*/, 0/*notify*/, added_menu, addedcolumns, NADDEDCOLUMNS); } @@ -1492,8 +1510,10 @@ static void new_completed(void *v, } /** @brief Update the newly-added list */ -void added_update(void) { - D(("added_update")); +static void added_changed(const char attribute((unused)) *event, + void attribute((unused)) *eventdata, + void attribute((unused)) *callbackdata) { + D(("added_changed")); gtk_label_set_text(GTK_LABEL(report_label), "updating newly added track list");