From 44e54e1b4cd6a8109628cf7d1176a5958cc3158a Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 21 Apr 2023 05:29:05 +0200 Subject: [PATCH] broadway: Set frame clock in ::constructed ... instead of passing it to g_object_new(). --- gdk/broadway/gdksurface-broadway.c | 43 ++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/gdk/broadway/gdksurface-broadway.c b/gdk/broadway/gdksurface-broadway.c index a84a0fc906..ac2b25ed48 100644 --- a/gdk/broadway/gdksurface-broadway.c +++ b/gdk/broadway/gdksurface-broadway.c @@ -233,32 +233,23 @@ gdk_broadway_display_create_surface (GdkDisplay *display, GdkSurface *parent) { GdkSurface *surface; - GdkFrameClock *frame_clock; - - if (parent) - frame_clock = g_object_ref (gdk_surface_get_frame_clock (parent)); - else - frame_clock = _gdk_frame_clock_idle_new (); switch (surface_type) { case GDK_SURFACE_TOPLEVEL: surface = g_object_new (GDK_TYPE_BROADWAY_TOPLEVEL, "display", display, - "frame-clock", frame_clock, NULL); break; case GDK_SURFACE_POPUP: surface = g_object_new (GDK_TYPE_BROADWAY_POPUP, "parent", parent, "display", display, - "frame-clock", frame_clock, NULL); break; case GDK_SURFACE_DRAG: surface = g_object_new (GDK_TYPE_BROADWAY_DRAG_SURFACE, "display", display, - "frame-clock", frame_clock, NULL); break; default: @@ -266,8 +257,6 @@ gdk_broadway_display_create_surface (GdkDisplay *display, break; } - g_object_unref (frame_clock); - return surface; } @@ -1270,6 +1259,8 @@ gdk_broadway_popup_constructed (GObject *object) self->root_x = GDK_BROADWAY_SURFACE (surface->parent)->root_x; self->root_y = GDK_BROADWAY_SURFACE (surface->parent)->root_y; + gdk_surface_set_frame_clock (surface, gdk_surface_get_frame_clock (surface->parent)); + G_OBJECT_CLASS (gdk_broadway_popup_parent_class)->constructed (object); /* We treat the real parent as a default transient for to get stacking right */ @@ -1403,6 +1394,19 @@ gdk_broadway_toplevel_init (GdkBroadwayToplevel *toplevel) { } +static void +gdk_broadway_toplevel_constructed (GObject *object) +{ + GdkSurface *surface = GDK_SURFACE (object); + GdkFrameClock *frame_clock; + + frame_clock = _gdk_frame_clock_idle_new (); + gdk_surface_set_frame_clock (surface, frame_clock); + g_object_unref (frame_clock); + + G_OBJECT_CLASS (gdk_broadway_toplevel_parent_class)->constructed (object); +} + static void gdk_broadway_toplevel_set_property (GObject *object, guint prop_id, @@ -1506,6 +1510,7 @@ gdk_broadway_toplevel_class_init (GdkBroadwayToplevelClass *class) { GObjectClass *object_class = G_OBJECT_CLASS (class); + object_class->constructed = gdk_broadway_toplevel_constructed; object_class->get_property = gdk_broadway_toplevel_get_property; object_class->set_property = gdk_broadway_toplevel_set_property; @@ -1666,9 +1671,25 @@ gdk_broadway_drag_surface_init (GdkBroadwayDragSurface *surface) { } +static void +gdk_broadway_drag_surface_constructed (GObject *object) +{ + GdkSurface *surface = GDK_SURFACE (object); + GdkFrameClock *frame_clock; + + frame_clock = _gdk_frame_clock_idle_new (); + gdk_surface_set_frame_clock (surface, frame_clock); + g_object_unref (frame_clock); + + G_OBJECT_CLASS (gdk_broadway_drag_surface_parent_class)->constructed (object); +} + static void gdk_broadway_drag_surface_class_init (GdkBroadwayDragSurfaceClass *class) { + GObjectClass *object_class = G_OBJECT_CLASS (class); + + object_class->constructed = gdk_broadway_drag_surface_constructed; } static gboolean -- 2.30.2