diff -urN gtk-2.12.11-clean/gdk/gdkwindow.c gtk-2.12.11-monitoring/gdk/gdkwindow.c
--- gtk-2.12.11-clean/gdk/gdkwindow.c	2008-11-17 20:18:12.000000000 +0000
+++ gtk-2.12.11-monitoring/gdk/gdkwindow.c	2008-11-18 19:26:38.000000000 +0000
@@ -2296,13 +2296,19 @@
   GdkWindowObject *toplevel;
 
   toplevel = (GdkWindowObject *)gdk_window_get_toplevel (window);
-
+  printf("update_and_descendants_freeze_count = %i\n",
+  			toplevel->update_and_descendants_freeze_count);
   return toplevel->update_and_descendants_freeze_count > 0;
 }
 
 static void
 gdk_window_schedule_update (GdkWindow *window)
 {
+
+  if (window && gdk_window_is_toplevel_frozen (window)) {
+  	printf("Not redrawing.\n");
+  }
+
   if (window &&
       (GDK_WINDOW_OBJECT (window)->update_freeze_count ||
        gdk_window_is_toplevel_frozen (window)))
@@ -2437,6 +2443,12 @@
       
       if (!GDK_WINDOW_DESTROYED (tmp_list->data))
         {
+        
+          if (gdk_window_is_toplevel_frozen (tmp_list->data)) {
+       	         printf("Not redrawing (process_all_updates)\n");
+           }
+        
+        
 	  if (private->update_freeze_count ||
 	      gdk_window_is_toplevel_frozen (tmp_list->data))
 	    update_windows = g_slist_prepend (update_windows, private);
@@ -2487,6 +2499,10 @@
       return;
     }
   
+  if (gdk_window_is_toplevel_frozen (window)) {
+       printf("Not redrawing (process_updates)\n");
+  }
+  
   if (private->update_area &&
       !private->update_freeze_count &&
       !gdk_window_is_toplevel_frozen (window))
@@ -2858,6 +2874,7 @@
   g_return_if_fail (private->window_type != GDK_WINDOW_CHILD);
 
   private->update_and_descendants_freeze_count++;
+  printf("%8p: now %i\n", window, private->update_and_descendants_freeze_count);
 }
 
 /**
@@ -2881,6 +2898,7 @@
   g_return_if_fail (private->update_and_descendants_freeze_count > 0);
 
   private->update_and_descendants_freeze_count--;
+  printf("%8p: now %i\n", window, private->update_and_descendants_freeze_count);
 
   gdk_window_schedule_update (window);
 }
diff -urN gtk-2.12.11-clean/gtk/gtkwindow.c gtk-2.12.11-monitoring/gtk/gtkwindow.c
--- gtk-2.12.11-clean/gtk/gtkwindow.c	2008-11-17 00:12:24.000000000 +0000
+++ gtk-2.12.11-monitoring/gtk/gtkwindow.c	2008-11-18 19:47:55.000000000 +0000
@@ -4439,6 +4439,7 @@
     gdk_window_withdraw (widget->window);
   
   window->configure_request_count = 0;
+  printf("unmap: %8p->configure_request_count = 0\n", window);
   window->configure_notify_received = FALSE;
 
   /* on unmap, we reset the default positioning of the window,
@@ -4822,7 +4823,12 @@
   if (window->configure_request_count > 0)
     {
       window->configure_request_count -= 1;
+      printf("%8p->configure_request_count = %i. Thawing toplevel...\n", window,
+      					window->configure_request_count);
       gdk_window_thaw_toplevel_updates_libgtk_only (widget->window);
+    } else {
+      printf("%8p->configure_request_count = %i. Not thawing.\n", window,
+      					window->configure_request_count);
     }
   
   /* As an optimization, we avoid a resize when possible.
@@ -6091,6 +6097,8 @@
         {
 	  /* Increment the number of have-not-yet-received-notify requests */
 	  window->configure_request_count += 1;
+	  printf("%8p->configure_request_count = %i.  Freezing toplevel...\n",
+	  			window, window->configure_request_count);
 	  gdk_window_freeze_toplevel_updates_libgtk_only (widget->window);
 
 	  /* for GTK_RESIZE_QUEUE toplevels, we are now awaiting a new
