diff options
| author | Lennart Poettering <lennart@poettering.net> | 2009-08-28 07:16:17 +0200 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2009-08-28 07:16:17 +0200 | 
| commit | 4839f99248ab8a48d9dfe54b5418d8d042820888 (patch) | |
| tree | 0fa9c3440a9d290858594b8de8ebdeefb2675736 /src | |
| parent | 5d7d423cc329209ee7a4c6e071ef094d4902e150 (diff) | |
gtk-module: make sure to process queued events before quitting
Diffstat (limited to 'src')
| -rw-r--r-- | src/canberra-gtk-module.c | 17 | 
1 files changed, 14 insertions, 3 deletions
diff --git a/src/canberra-gtk-module.c b/src/canberra-gtk-module.c index 6cb16f1..1027dfb 100644 --- a/src/canberra-gtk-module.c +++ b/src/canberra-gtk-module.c @@ -628,11 +628,9 @@ static void dispatch_sound_event(SoundEventData *d) {  /*         g_warning("Failed to play event sound: %s", ca_strerror(ret)); */  } -static gboolean idle_cb(void *userdata) { +static void dispatch_queue(void) {      SoundEventData *d; -    idle_id = 0; -      while ((d = g_queue_pop_head(&sound_event_queue))) {          if (!(d = filter_sound_event(d))) @@ -643,6 +641,12 @@ static gboolean idle_cb(void *userdata) {          dispatch_sound_event(d);          free_sound_event(d);      } +} + +static gboolean idle_cb(void *userdata) { +    idle_id = 0; + +    dispatch_queue();      return FALSE;  } @@ -742,6 +746,11 @@ static void connect_settings(void) {      connected = TRUE;  } +static gboolean quit_handler(gpointer data) { +    dispatch_queue(); +    return FALSE; +} +  G_MODULE_EXPORT void gtk_module_init(gint *argc, gchar ***argv[]) {      /* This is the same quark libgnomeui uses! */ @@ -763,6 +772,8 @@ G_MODULE_EXPORT void gtk_module_init(gint *argc, gchar ***argv[]) {      install_hook(GTK_TYPE_NOTEBOOK, "switch-page", &signal_id_notebook_switch_page);      install_hook(GTK_TYPE_TREE_VIEW, "cursor-changed", &signal_id_tree_view_cursor_changed);      install_hook(GTK_TYPE_ICON_VIEW, "selection-changed", &signal_id_icon_view_selection_changed); + +    gtk_quit_add(1, quit_handler, NULL);  }  G_MODULE_EXPORT gchar* g_module_check_init(GModule *module);  | 
