[gtk+] Automatically flush window when doing non-double-buffered expose
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+] Automatically flush window when doing non-double-buffered expose
- Date: Mon, 14 Sep 2009 14:11:23 +0000 (UTC)
commit 7ab7ffa542be7a6dcda1a35d151ace5e22a8d721
Author: Alexander Larsson <alexl redhat com>
Date: Mon Sep 14 16:07:43 2009 +0200
Automatically flush window when doing non-double-buffered expose
Applications using non-double-buffered drawing using cairo (e.g. Abiword)
can draw directly to the window using cairo and thus manage to avoid
the automatic flushing of outstanding moves. This can cause redraw
inconsistencies like bug 593507.
We fix this by always flushing when exposing non-double-buffered widgets.
docs/reference/gdk/gdk-sections.txt | 1 +
gtk/gtkmain.c | 10 +++++++++-
2 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/docs/reference/gdk/gdk-sections.txt b/docs/reference/gdk/gdk-sections.txt
index 5bdc717..43d000c 100644
--- a/docs/reference/gdk/gdk-sections.txt
+++ b/docs/reference/gdk/gdk-sections.txt
@@ -662,6 +662,7 @@ gdk_window_resize
gdk_window_move_resize
gdk_window_scroll
gdk_window_move_region
+gdk_window_flush
gdk_window_ensure_native
gdk_window_reparent
gdk_window_clear
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 11aee08..e47e1be 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -1559,7 +1559,15 @@ gtk_main_do_event (GdkEvent *event)
gdk_window_end_paint (event->any.window);
}
else
- gtk_widget_send_expose (event_widget, event);
+ {
+ /* The app may paint with a previously allocated cairo_t,
+ which will draw directly to the window. We can't catch cairo
+ drap operatoins to automatically flush the window, thus we
+ need to explicitly flush any outstanding moves or double
+ buffering */
+ gdk_window_flush (event->any.window);
+ gtk_widget_send_expose (event_widget, event);
+ }
break;
case GDK_PROPERTY_NOTIFY:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]