[gtk+] Make gdk_flush_outstanding_moves "reentrant"



commit 9011a79ed2f205554315b3d15835e07227f1b97b
Author: Alexander Larsson <alexl redhat com>
Date:   Thu Apr 11 11:35:17 2013 +0200

    Make gdk_flush_outstanding_moves "reentrant"
    
    If do_move_region_bits_on_impl causes updates they will propely
    be moved by the outstanding moves we have not yet flushed.

 gdk/gdkwindow.c |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index f9628f3..482f499 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -3499,24 +3499,22 @@ static void
 gdk_window_flush_outstanding_moves (GdkWindow *window)
 {
   GdkWindow *impl_window;
-  GList *l, *outstanding;
   GdkWindowRegionMove *move;
 
   impl_window = gdk_window_get_impl_window (window);
-  outstanding = impl_window->outstanding_moves;
-  impl_window->outstanding_moves = NULL;
 
-  for (l = outstanding; l != NULL; l = l->next)
+  while (impl_window->outstanding_moves)
     {
-      move = l->data;
+      move = impl_window->outstanding_moves->data;
+      impl_window->outstanding_moves = 
+       g_list_delete_link (impl_window->outstanding_moves,
+                           impl_window->outstanding_moves);
 
       do_move_region_bits_on_impl (impl_window,
                                   move->dest_region, move->dx, move->dy);
 
       gdk_window_region_move_free (move);
     }
-
-  g_list_free (outstanding);
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]