macos: Set frame clock in ::constructed
authorBenjamin Otte <otte@redhat.com>
Fri, 21 Apr 2023 03:35:45 +0000 (05:35 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 26 Apr 2023 19:03:34 +0000 (21:03 +0200)
gdk/macos/gdkmacosdragsurface.c
gdk/macos/gdkmacospopupsurface.c
gdk/macos/gdkmacossurface.c
gdk/macos/gdkmacostoplevelsurface.c

index 4c36f277159f4f55854de8bb0b02788efd8c6e3c..d2acbcbe9324cf15cad4be8f6c469ec74b8ab876 100644 (file)
@@ -70,7 +70,9 @@ _gdk_macos_drag_surface_constructed (GObject *object)
 
   GdkMacosWindow *window;
   GdkMacosSurface *self = GDK_MACOS_SURFACE (object);
+  GdkSurface *surface = GDK_SURFACE (self);
   GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (self));
+  GdkFrameClock *frame_clock;
   NSScreen *screen;
   NSUInteger style_mask;
   NSRect content_rect;
@@ -100,6 +102,10 @@ _gdk_macos_drag_surface_constructed (GObject *object)
 
   _gdk_macos_surface_set_native (self, window);
 
+  frame_clock = _gdk_frame_clock_idle_new ();
+  gdk_surface_set_frame_clock (surface, frame_clock);
+  g_object_unref (frame_clock);
+
   GDK_END_MACOS_ALLOC_POOL;
 
   G_OBJECT_CLASS (_gdk_macos_drag_surface_parent_class)->constructed (object);
@@ -121,18 +127,11 @@ _gdk_macos_drag_surface_init (GdkMacosDragSurface *self)
 GdkMacosSurface *
 _gdk_macos_drag_surface_new (GdkMacosDisplay *display)
 {
-  GdkFrameClock *frame_clock;
-
   g_return_val_if_fail (GDK_IS_MACOS_DISPLAY (display), NULL);
 
-  frame_clock = _gdk_frame_clock_idle_new ();
-
   self = g_object_new (GDK_TYPE_MACOS_DRAG_SURFACE,
                        "display", display,
-                       "frame-clock", frame_clock,
                        NULL);
 
-  g_object_unref (frame_clock);
-
   return g_steal_pointer (&self);
 }
index e3ab5356549db15e9ffa109323e1bbc12b31cbe0..0c9f3c58b70cf33fb7dccf9c462b01dd206e8a6e 100644 (file)
@@ -290,6 +290,7 @@ _gdk_macos_popup_surface_constructed (GObject *object)
 
   GdkMacosWindow *window;
   GdkMacosPopupSurface *self = GDK_MACOS_POPUP_SURFACE (object);
+  GdkSurface *surface = GDK_SURFACE (self);
   GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (self));
   NSScreen *screen;
   NSUInteger style_mask;
@@ -322,6 +323,8 @@ _gdk_macos_popup_surface_constructed (GObject *object)
 
   _gdk_macos_surface_set_native (GDK_MACOS_SURFACE (self), window);
 
+  gdk_surface_set_frame_clock (surface, gdk_surface_get_frame_clock (surface->parent));
+
   GDK_END_MACOS_ALLOC_POOL;
 
   G_OBJECT_CLASS (_gdk_macos_popup_surface_parent_class)->constructed (object);
index 226fffe656f63d97c5533f699be20098188c234f..e79f05ecae589041f926f8b1f054e90ece6e3f47 100644 (file)
@@ -31,7 +31,7 @@
 #include "gdkdeviceprivate.h"
 #include "gdkdisplay.h"
 #include "gdkeventsprivate.h"
-#include "gdkframeclockidleprivate.h"
+#include "gdkframeclockprivate.h"
 #include "gdkseatprivate.h"
 #include "gdksurfaceprivate.h"
 
@@ -588,29 +588,21 @@ _gdk_macos_surface_new (GdkMacosDisplay *display,
                         GdkSurfaceType   surface_type,
                         GdkSurface      *parent)
 {
-  GdkFrameClock *frame_clock;
   GdkMacosSurface *ret;
 
   g_return_val_if_fail (GDK_IS_MACOS_DISPLAY (display), NULL);
 
-  if (parent != NULL)
-    frame_clock = g_object_ref (parent->frame_clock);
-  else
-    frame_clock = _gdk_frame_clock_idle_new ();
-
   switch (surface_type)
     {
     case GDK_SURFACE_TOPLEVEL:
       ret = g_object_new (GDK_TYPE_MACOS_TOPLEVEL_SURFACE,
                           "display", display,
-                          "frame-clock", frame_clock,
                           NULL);
       break;
 
     case GDK_SURFACE_POPUP:
       ret = g_object_new (GDK_TYPE_MACOS_POPUP_SURFACE,
                           "display", display,
-                          "frame-clock", frame_clock,
                           "parent", parent,
                           NULL);
 
@@ -622,8 +614,6 @@ _gdk_macos_surface_new (GdkMacosDisplay *display,
       ret = NULL;
     }
 
-  g_object_unref (frame_clock);
-
   return g_steal_pointer (&ret);
 }
 
index 202e7367cb4bf6c0443b1ed287a2858933aa5487..c4e28beb4012c751e958a73f0e9c74b98983da92 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "gdkmacostoplevelsurface-private.h"
 
+#include "gdkframeclockidleprivate.h"
 #include "gdkseatprivate.h"
 #include "gdktoplevelprivate.h"
 
@@ -632,7 +633,9 @@ _gdk_macos_toplevel_surface_constructed (GObject *object)
 
   GdkMacosWindow *window;
   GdkMacosToplevelSurface *self = GDK_MACOS_TOPLEVEL_SURFACE (object);
-  GdkDisplay *display = gdk_surface_get_display (GDK_SURFACE (self));
+  GdkSurface *surface = GDK_SURFACE (self);
+  GdkMacosDisplay *display = GDK_MACOS_DISPLAY (gdk_surface_get_display (surface));
+  GdkFrameClock *frame_clock;
   NSUInteger style_mask;
   NSRect content_rect;
   NSRect visible_frame;
@@ -661,6 +664,10 @@ _gdk_macos_toplevel_surface_constructed (GObject *object)
 
   _gdk_macos_surface_set_native (GDK_MACOS_SURFACE (self), window);
 
+  frame_clock = _gdk_frame_clock_idle_new ();
+  gdk_surface_set_frame_clock (surface, frame_clock);
+  g_object_unref (frame_clock);
+
   GDK_END_MACOS_ALLOC_POOL;
 
   G_OBJECT_CLASS (_gdk_macos_toplevel_surface_parent_class)->constructed (object);