[gtk/wip/chergert/fix-4625] gsk/gl: use critical instead of assert in dispose




commit 654d74bfb81fc768066181f057aaac0cf04d71ab
Author: Christian Hergert <chergert redhat com>
Date:   Mon May 16 10:50:07 2022 -0700

    gsk/gl: use critical instead of assert in dispose
    
    Instead of asserting only in debug builds (which are generally not
    shipped in distributions) we should deliver a critical log-level message
    so that these can be found sooner when not developing with jhbuild,
    Flatpak, etc.
    
    Also assert that we've setup the state correctly when realizing the
    GskGLRenderer object.
    
    Fixes #4625

 gsk/gl/gskglrenderer.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c
index afb34cd2f1..67cc924cda 100644
--- a/gsk/gl/gskglrenderer.c
+++ b/gsk/gl/gskglrenderer.c
@@ -158,6 +158,10 @@ failure:
 
   gdk_profiler_end_mark (start_time, "realize GskGLRenderer", NULL);
 
+  /* Assert either all or no state was set */
+  g_assert ((ret && self->driver != NULL && self->context != NULL && self->command_queue != NULL) ||
+            (!ret && self->driver == NULL && self->context == NULL && self->command_queue == NULL));
+
   return ret;
 }
 
@@ -403,11 +407,11 @@ gsk_gl_renderer_render_texture (GskRenderer           *renderer,
 static void
 gsk_gl_renderer_dispose (GObject *object)
 {
-#ifdef G_ENABLE_DEBUG
   GskGLRenderer *self = (GskGLRenderer *)object;
 
-  g_assert (self->driver == NULL);
-#endif
+  if (self->driver != NULL)
+    g_critical ("Attempt to dispose %s without calling gsk_renderer_unrealize()",
+                G_OBJECT_TYPE_NAME (self));
 
   G_OBJECT_CLASS (gsk_gl_renderer_parent_class)->dispose (object);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]