From 490cbf84cddc09ef472b187d5907bd6ba5a02b53 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 5 Feb 2009 10:47:11 +0100 Subject: [PATCH] Be more explicit about when to flush moves Also makes the non-doublebuffered case work better by flushing before we call _gdk_windowing_window_process_updates_recurse. --- gdk/gdkwindow.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 730c82e1b7..6f381f24a8 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -2088,8 +2088,6 @@ gdk_window_end_implicit_paint (GdkWindow *window) private->implicit_paint = NULL; - gdk_window_flush_outstanding_moves (window); - if (!gdk_region_empty (paint->region)) { /* Some regions are valid, push these to window now */ @@ -4499,9 +4497,15 @@ gdk_window_process_updates_internal (GdkWindow *window) gdk_region_get_clipbox (expose_region, &clip_box); end_implicit = gdk_window_begin_implicit_paint (window, &clip_box); + if (end_implicit) /* rendering is not double buffered, do moves now */ + gdk_window_flush_outstanding_moves (window); _gdk_windowing_window_process_updates_recurse (window, expose_region); if (end_implicit) - gdk_window_end_implicit_paint (window); + { + /* Do moves right before exposes are rendered */ + gdk_window_flush_outstanding_moves (window); + gdk_window_end_implicit_paint (window); + } if (expose_region != update_area) gdk_region_destroy (expose_region);