From c5dc38c1424543670ad72fe71f3640eb3b04b06d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 23 Feb 2010 12:32:36 -0500 Subject: [PATCH] Protect against X errors when clearing the DND cache This was reported as a problem in bug 609952. --- gdk/x11/gdkdnd-x11.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c index 2da9567b61..824f96d235 100644 --- a/gdk/x11/gdkdnd-x11.c +++ b/gdk/x11/gdkdnd-x11.c @@ -573,15 +573,21 @@ static void gdk_window_cache_destroy (GdkWindowCache *cache) { GdkWindow *root_window = gdk_screen_get_root_window (cache->screen); - - XSelectInput (GDK_WINDOW_XDISPLAY (root_window), + + XSelectInput (GDK_WINDOW_XDISPLAY (root_window), GDK_WINDOW_XWINDOW (root_window), cache->old_event_mask); gdk_window_remove_filter (root_window, gdk_window_cache_filter, cache); gdk_window_remove_filter (NULL, gdk_window_cache_shape_filter, cache); - g_list_foreach (cache->children, (GFunc)free_cache_child, + gdk_error_trap_push (); + + g_list_foreach (cache->children, (GFunc)free_cache_child, gdk_screen_get_display (cache->screen)); + + gdk_flush (); + gdk_error_trap_pop (); + g_list_free (cache->children); g_hash_table_destroy (cache->child_hash);