From: Benjamin Otte Date: Tue, 9 May 2023 12:55:54 +0000 (+0200) Subject: gdk: Add GDK_DEBUG=no-vsync X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~288^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=02e2a6f311210d28e135db01d7bf2f8417d66e5c;p=gtk4.git gdk: Add GDK_DEBUG=no-vsync That turns off waiting and freezing in the frame clock and in surfaces and triggers redraws asap. --- diff --git a/gdk/gdk.c b/gdk/gdk.c index 8c0bdaff00..1c54545523 100644 --- a/gdk/gdk.c +++ b/gdk/gdk.c @@ -132,6 +132,7 @@ static const GdkDebugKey gdk_debug_keys[] = { { "vulkan-validate", GDK_DEBUG_VULKAN_VALIDATE, "Load the Vulkan validation layer", TRUE }, { "default-settings",GDK_DEBUG_DEFAULT_SETTINGS, "Force default values for xsettings", TRUE }, { "high-depth", GDK_DEBUG_HIGH_DEPTH, "Use high bit depth rendering if possible", TRUE }, + { "no-vsync", GDK_DEBUG_NO_VSYNC, "Repaint instantly (uses 100% CPU with animations)", TRUE }, }; diff --git a/gdk/gdkdebugprivate.h b/gdk/gdkdebugprivate.h index d41cf3178f..f5199bae82 100644 --- a/gdk/gdkdebugprivate.h +++ b/gdk/gdkdebugprivate.h @@ -52,6 +52,7 @@ typedef enum { GDK_DEBUG_VULKAN_VALIDATE = 1 << 23, GDK_DEBUG_DEFAULT_SETTINGS= 1 << 24, GDK_DEBUG_HIGH_DEPTH = 1 << 25, + GDK_DEBUG_NO_VSYNC = 1 << 26, } GdkDebugFlags; extern guint _gdk_debug_flags; diff --git a/gdk/gdkframeclockidle.c b/gdk/gdkframeclockidle.c index 58c6476f72..3deade7b05 100644 --- a/gdk/gdkframeclockidle.c +++ b/gdk/gdkframeclockidle.c @@ -280,6 +280,9 @@ gdk_frame_clock_idle_is_frozen (GdkFrameClockIdle *self) { GdkFrameClockIdlePrivate *priv = self->priv; + if (GDK_DEBUG_CHECK (NO_VSYNC)) + return FALSE; + return priv->freeze_count > 0; } @@ -317,7 +320,8 @@ maybe_start_idle (GdkFrameClockIdle *self, { guint min_interval = 0; - if (priv->min_next_frame_time != 0) + if (priv->min_next_frame_time != 0 && + !GDK_DEBUG_CHECK (NO_VSYNC)) { gint64 now = g_get_monotonic_time (); gint64 min_interval_us = MAX (priv->min_next_frame_time, now) - now; diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 981a511935..dc2bd473e0 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -1530,6 +1530,9 @@ gdk_surface_freeze_updates (GdkSurface *surface) { g_return_if_fail (GDK_IS_SURFACE (surface)); + if (GDK_DEBUG_CHECK (NO_VSYNC)) + return; + surface->update_freeze_count++; if (surface->update_freeze_count == 1) _gdk_frame_clock_uninhibit_freeze (surface->frame_clock); @@ -1562,6 +1565,9 @@ gdk_surface_thaw_updates (GdkSurface *surface) { g_return_if_fail (GDK_IS_SURFACE (surface)); + if (GDK_DEBUG_CHECK (NO_VSYNC)) + return; + g_return_if_fail (surface->update_freeze_count > 0); if (--surface->update_freeze_count == 0)