[gtk+/wip/frame-synchronization: 8/33] Freeze the update counter for unmapped windows
- From: Owen Taylor <otaylor src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/frame-synchronization: 8/33] Freeze the update counter for unmapped windows
- Date: Tue, 4 Dec 2012 17:58:42 +0000 (UTC)
commit 4faae3291a53c3df52d5966438931424dc572779
Author: Owen W. Taylor <otaylor fishsoup net>
Date: Wed Oct 3 20:13:42 2012 -0400
Freeze the update counter for unmapped windows
When a window is unmapped, freeze its paint clock. This avoids doing
unnecessary work, but also means that we won't block waiting for
_NET_WM_FRAME_DRAWN messages that will never be received since the
frame ended while the window was withdrawn.
https://bugzilla.gnome.org/show_bug.cgi?id=685460
gdk/x11/gdkdisplay-x11.c | 6 ++++++
gdk/x11/gdkwindow-x11.c | 3 +++
2 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index f943484..72935ab 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -688,6 +688,9 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
gdk_paint_clock_thaw (gdk_window_get_paint_clock (event->any.window));
}
+ if (toplevel)
+ gdk_window_freeze_toplevel_updates_libgtk_only (window);
+
_gdk_x11_window_grab_check_unmap (window, xevent->xany.serial);
}
@@ -708,6 +711,9 @@ gdk_x11_display_translate_event (GdkEventTranslator *translator,
gdk_synthesize_window_state (window,
GDK_WINDOW_STATE_ICONIFIED,
0);
+
+ if (toplevel)
+ gdk_window_thaw_toplevel_updates_libgtk_only (window);
}
break;
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 26655c2..67ae808 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -939,6 +939,9 @@ _gdk_x11_display_create_window_impl (GdkDisplay *display,
G_CALLBACK (on_paint_clock_before_paint), window);
g_signal_connect (clock, "after-paint",
G_CALLBACK (on_paint_clock_after_paint), window);
+
+ if (GDK_WINDOW_TYPE (window) != GDK_WINDOW_CHILD)
+ gdk_window_freeze_toplevel_updates_libgtk_only (window);
}
static GdkEventMask
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]