From: Benjamin Otte Date: Fri, 21 Apr 2023 02:59:48 +0000 (+0200) Subject: win32: Set frame clock in constructed() X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~368^2~14 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=77fe9116af2767be11d6c62e4136f56058cae005;p=gtk4.git win32: Set frame clock in constructed() ... instead of passing it as construct argument. --- diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c index c52a002e56..eaf9c84633 100644 --- a/gdk/win32/gdksurface-win32.c +++ b/gdk/win32/gdksurface-win32.c @@ -441,32 +441,23 @@ gdk_win32_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_WIN32_TOPLEVEL, "display", display, - "frame-clock", frame_clock, NULL); break; case GDK_SURFACE_POPUP: surface = g_object_new (GDK_TYPE_WIN32_POPUP, "parent", parent, "display", display, - "frame-clock", frame_clock, NULL); break; case GDK_SURFACE_DRAG: surface = g_object_new (GDK_TYPE_WIN32_DRAG_SURFACE, "display", display, - "frame-clock", frame_clock, NULL); break; default: @@ -474,8 +465,6 @@ gdk_win32_display_create_surface (GdkDisplay *display, break; } - g_object_unref (frame_clock); - return surface; } @@ -486,6 +475,7 @@ gdk_win32_surface_constructed (GObject *object) GdkSurface *surface = GDK_SURFACE (impl); GdkDisplay *display = gdk_surface_get_display (surface); GdkWin32Display *display_win32 = GDK_WIN32_DISPLAY (display); + GdkFrameClock *frame_clock; HANDLE owner; ATOM klass = 0; DWORD dwStyle = 0, dwExStyle; @@ -504,22 +494,29 @@ gdk_win32_surface_constructed (GObject *object) if (G_OBJECT_TYPE (impl) == GDK_TYPE_WIN32_TOPLEVEL) { dwStyle |= WS_OVERLAPPEDWINDOW; + frame_clock = _gdk_frame_clock_idle_new (); } else if (G_OBJECT_TYPE (impl) == GDK_TYPE_WIN32_DRAG_SURFACE) { dwExStyle |= WS_EX_TOOLWINDOW | WS_EX_TOPMOST; dwStyle |= WS_POPUP; + frame_clock = _gdk_frame_clock_idle_new (); } else if (G_OBJECT_TYPE (impl) == GDK_TYPE_WIN32_POPUP) { + GdkSurface *parent = gdk_popup_get_parent (GDK_POPUP (impl)); dwStyle |= WS_POPUP; - owner = GDK_SURFACE_HWND (gdk_popup_get_parent (GDK_POPUP (impl))); + owner = GDK_SURFACE_HWND (parent); + frame_clock = g_object_ref (gdk_surface_get_frame_clock (parent)); } else { g_assert_not_reached (); } + gdk_surface_set_frame_clock (surface, frame_clock); + g_object_unref (frame_clock); + title = get_default_title (); if (!title || !*title) title = ""; @@ -575,7 +572,7 @@ gdk_win32_surface_constructed (GObject *object) _gdk_win32_surface_register_dnd (surface); _gdk_win32_surface_update_style_bits (surface); - g_signal_connect (gdk_surface_get_frame_clock (surface), + g_signal_connect (frame_clock, "after-paint", G_CALLBACK (gdk_win32_impl_frame_clock_after_paint), impl);