From 42cea18f3ea2472b22ac2fbd1a8be6fba1418e90 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 21 Apr 2023 05:35:45 +0200 Subject: [PATCH] macos: Set frame clock in ::constructed --- gdk/macos/gdkmacosdragsurface.c | 13 ++++++------- gdk/macos/gdkmacospopupsurface.c | 3 +++ gdk/macos/gdkmacossurface.c | 12 +----------- gdk/macos/gdkmacostoplevelsurface.c | 9 ++++++++- 4 files changed, 18 insertions(+), 19 deletions(-) diff --git a/gdk/macos/gdkmacosdragsurface.c b/gdk/macos/gdkmacosdragsurface.c index 4c36f27715..d2acbcbe93 100644 --- a/gdk/macos/gdkmacosdragsurface.c +++ b/gdk/macos/gdkmacosdragsurface.c @@ -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); } diff --git a/gdk/macos/gdkmacospopupsurface.c b/gdk/macos/gdkmacospopupsurface.c index e3ab535654..0c9f3c58b7 100644 --- a/gdk/macos/gdkmacospopupsurface.c +++ b/gdk/macos/gdkmacospopupsurface.c @@ -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); diff --git a/gdk/macos/gdkmacossurface.c b/gdk/macos/gdkmacossurface.c index 226fffe656..e79f05ecae 100644 --- a/gdk/macos/gdkmacossurface.c +++ b/gdk/macos/gdkmacossurface.c @@ -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); } diff --git a/gdk/macos/gdkmacostoplevelsurface.c b/gdk/macos/gdkmacostoplevelsurface.c index 202e7367cb..c4e28beb40 100644 --- a/gdk/macos/gdkmacostoplevelsurface.c +++ b/gdk/macos/gdkmacostoplevelsurface.c @@ -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); -- 2.30.2