gdk: Add GDK_DEBUG=no-vsync
authorBenjamin Otte <otte@redhat.com>
Tue, 9 May 2023 12:55:54 +0000 (14:55 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 9 May 2023 14:29:41 +0000 (16:29 +0200)
That turns off waiting and freezing in the frame clock and in
surfaces and triggers redraws asap.

gdk/gdk.c
gdk/gdkdebugprivate.h
gdk/gdkframeclockidle.c
gdk/gdksurface.c

index 8c0bdaff00b2f94dba7f243873f974abb7e7bd1e..1c545455233ebee9e339dcb581e79721d011085c 100644 (file)
--- 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 },
 };
 
 
index d41cf3178f6fde8f8e95e3bbbd19fcbe39798af2..f5199bae82698229136b2ae7aa7a95bad4f6bf7c 100644 (file)
@@ -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;
index 58c6476f72c40e7eb125edb82678d89de77e5c1b..3deade7b0594de784dd0128b603f69a102a429dc 100644 (file)
@@ -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;
index 981a511935d28d65e19a78a43154c5ec0667b0e3..dc2bd473e02255530f476491c01bc3f5a6a0cb1c 100644 (file)
@@ -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)