[gtk/wip/matthiasc/popup5: 106/124] gdk: Inherit the frame clock for popups



commit 6809400c3ac17e51892013eceaf22f185e85c232
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun May 5 22:59:51 2019 +0000

    gdk: Inherit the frame clock for popups
    
    With separate clocks, the phases are not coordinated,
    which messes with GTKs size allocation machinery treating
    the entire widget tree as a whole, and causes us to
    run into assertion where popups get drawn before they
    are allocated.

 gdk/wayland/gdksurface-wayland.c | 5 ++++-
 gdk/x11/gdksurface-x11.c         | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c
index 924e5045b5..868d21c247 100644
--- a/gdk/wayland/gdksurface-wayland.c
+++ b/gdk/wayland/gdksurface-wayland.c
@@ -517,7 +517,10 @@ _gdk_wayland_display_create_surface (GdkDisplay     *display,
   GdkWaylandSurface *impl;
   GdkFrameClock *frame_clock;
 
-  frame_clock = _gdk_frame_clock_idle_new ();
+  if (parent)
+    frame_clock = g_object_ref (gdk_surface_get_frame_clock (parent));
+  else
+    frame_clock = _gdk_frame_clock_idle_new ();
 
   surface = g_object_new (GDK_TYPE_WAYLAND_SURFACE,
                           "display", display,
diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c
index 1d6dee093a..c4887c0fbc 100644
--- a/gdk/x11/gdksurface-x11.c
+++ b/gdk/x11/gdksurface-x11.c
@@ -809,7 +809,10 @@ _gdk_x11_display_create_surface (GdkDisplay     *display,
   x11_screen = GDK_X11_SCREEN (display_x11->screen);
   xparent = GDK_SCREEN_XROOTWIN (x11_screen);
 
-  frame_clock = _gdk_frame_clock_idle_new ();
+  if (parent)
+    frame_clock = g_object_ref (gdk_surface_get_frame_clock (parent));
+  else
+    frame_clock = _gdk_frame_clock_idle_new ();
 
   surface = g_object_new (GDK_TYPE_X11_SURFACE,
                           "display", display,


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