Mercurial > pidgin.yaz
diff src/gtkblist.c @ 13434:ffd724befbf8
[gaim-migrate @ 15809]
Cleanup the busy cursor handling code to eliminate a bunch of these loops:
while (gtk_events_pending())
gtk_main_iteration();
They seem like a race condition waiting to happen. This code is also simpler,
and more generic.
This leaves only one such loop, in src/gtkblist.c's gaim_gtk_blist_expand_contact_cb().
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Tue, 07 Mar 2006 05:48:54 +0000 |
parents | a6b846c71358 |
children | 5251e354d213 |
line wrap: on
line diff
--- a/src/gtkblist.c Tue Mar 07 05:09:51 2006 +0000 +++ b/src/gtkblist.c Tue Mar 07 05:48:54 2006 +0000 @@ -387,10 +387,7 @@ GaimAccount *account; char *name = NULL; - gdk_window_set_cursor(gtkblist->window->window, cursor); - gdk_cursor_unref(cursor); - while (gtk_events_pending()) - gtk_main_iteration(); + gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH); if (GAIM_BLIST_NODE_IS_BUDDY(node)) { GaimBuddy *b = (GaimBuddy*) node; @@ -408,10 +405,10 @@ } } else if (GAIM_BLIST_NODE_IS_CONTACT(node)) { gaim_gtk_log_show_contact((GaimContact *)node); - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); return; } else { - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); /* This callback should not have been registered for a node * that doesn't match the type of one of the blocks above. */ @@ -422,7 +419,7 @@ gaim_gtk_log_show(type, name, account); g_free(name); - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); } } @@ -1330,75 +1327,43 @@ static void gaim_gtk_blist_buddy_details_cb(gpointer data, guint action, GtkWidget *item) { - if (gtkblist->window->window) - { - GdkCursor *cursor = gdk_cursor_new(GDK_WATCH); - gdk_window_set_cursor(gtkblist->window->window, cursor); - while (gtk_events_pending()) - gtk_main_iteration(); - gdk_cursor_unref(cursor); - } + gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH); gaim_prefs_set_bool("/gaim/gtk/blist/show_buddy_icons", gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item))); - if (gtkblist->window->window) - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); } static void gaim_gtk_blist_show_idle_time_cb(gpointer data, guint action, GtkWidget *item) { - if (gtkblist->window->window) - { - GdkCursor *cursor = gdk_cursor_new(GDK_WATCH); - gdk_window_set_cursor(gtkblist->window->window, cursor); - while (gtk_events_pending()) - gtk_main_iteration(); - gdk_cursor_unref(cursor); - } + gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH); gaim_prefs_set_bool("/gaim/gtk/blist/show_idle_time", gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item))); - if (gtkblist->window->window) - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); } static void gaim_gtk_blist_show_empty_groups_cb(gpointer data, guint action, GtkWidget *item) { - if (gtkblist->window->window) - { - GdkCursor *cursor = gdk_cursor_new(GDK_WATCH); - gdk_window_set_cursor(gtkblist->window->window, cursor); - while (gtk_events_pending()) - gtk_main_iteration(); - gdk_cursor_unref(cursor); - } + gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH); gaim_prefs_set_bool("/gaim/gtk/blist/show_empty_groups", gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(item))); - if (gtkblist->window->window) - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); } static void gaim_gtk_blist_edit_mode_cb(gpointer callback_data, guint callback_action, GtkWidget *checkitem) { - if (gtkblist->window->window) - { - GdkCursor *cursor = gdk_cursor_new(GDK_WATCH); - gdk_window_set_cursor(gtkblist->window->window, cursor); - while (gtk_events_pending()) - gtk_main_iteration(); - gdk_cursor_unref(cursor); - } + gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH); gaim_prefs_set_bool("/gaim/gtk/blist/show_offline_buddies", gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(checkitem))); - if (gtkblist->window->window) - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); } static void gaim_gtk_blist_mute_sounds_cb(gpointer data, guint action, GtkWidget *item) @@ -5766,21 +5731,12 @@ { if (gtk_check_menu_item_get_active(checkmenuitem)) { - if (gtkblist->window->window != NULL) - { - GdkCursor *cursor = gdk_cursor_new(GDK_WATCH); - gdk_window_set_cursor(gtkblist->window->window, cursor); - gdk_cursor_unref(cursor); - } - - while (gtk_events_pending()) - gtk_main_iteration(); + gaim_gtk_set_cursor(gtkblist->window, GDK_WATCH); gaim_gtk_blist_sort_method_set(id); gaim_prefs_set_string("/gaim/gtk/blist/sort_type", id); - if (gtkblist->window->window != NULL) - gdk_window_set_cursor(gtkblist->window->window, NULL); + gaim_gtk_clear_cursor(gtkblist->window); } }