macos: Set frame clock in ::constructed

This commit is contained in:
Benjamin Otte
2023-04-21 05:35:45 +02:00
parent 44e54e1b4c
commit 42cea18f3e
4 changed files with 18 additions and 19 deletions

View 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);
}

View 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);

View 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);
}

View 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);