]> Pileus Git - ~andy/gtk/commitdiff
Protect against X errors when clearing the DND cache
authorMatthias Clasen <mclasen@redhat.com>
Tue, 23 Feb 2010 17:32:36 +0000 (12:32 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 23 Feb 2010 17:51:44 +0000 (12:51 -0500)
This was reported as a problem in bug 609952.

gdk/x11/gdkdnd-x11.c

index 2da9567b61db2ee3e7a8c52e74c77e4cfe0ae152..824f96d2355941cc610f062b3d97d79eefa69587 100644 (file)
@@ -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);