summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2016-08-06 09:37:47 -0400
committerEmmanuele Bassi <ebassi@gnome.org>2016-08-09 17:31:55 +0100
commit457094bda57070c284f51e327809b564681f07b5 (patch)
tree6ab13a810b7bb2784d8a7c977c8ec958e17c866c
parent8d14c67735762a06fdec3a0927f6b402c79297ac (diff)
downloadgtk+-457094bda57070c284f51e327809b564681f07b5.tar.gz
Some debug help
Make the bounds of drawing surfaces created by render nodes visible. Trigger with GSK_DEBUG=surface.
-rw-r--r--gsk/gskdebug.c3
-rw-r--r--gsk/gskdebugprivate.h3
-rw-r--r--gsk/gskrendernode.c11
3 files changed, 15 insertions, 2 deletions
diff --git a/gsk/gskdebug.c b/gsk/gskdebug.c
index 1e0dc1c0b3..216e118441 100644
--- a/gsk/gskdebug.c
+++ b/gsk/gskdebug.c
@@ -7,7 +7,8 @@ static const GDebugKey gsk_debug_keys[] = {
{ "cairo", GSK_DEBUG_CAIRO },
{ "opengl", GSK_DEBUG_OPENGL },
{ "shaders", GSK_DEBUG_SHADERS },
- { "transforms", GSK_DEBUG_TRANSFORMS }
+ { "transforms", GSK_DEBUG_TRANSFORMS },
+ { "surface", GSK_DEBUG_SURFACE }
};
#endif
diff --git a/gsk/gskdebugprivate.h b/gsk/gskdebugprivate.h
index 5ab23b2535..ee1857c97b 100644
--- a/gsk/gskdebugprivate.h
+++ b/gsk/gskdebugprivate.h
@@ -11,7 +11,8 @@ typedef enum {
GSK_DEBUG_CAIRO = 1 << 2,
GSK_DEBUG_OPENGL = 1 << 3,
GSK_DEBUG_SHADERS = 1 << 4,
- GSK_DEBUG_TRANSFORMS = 1 << 5
+ GSK_DEBUG_TRANSFORMS = 1 << 5,
+ GSK_DEBUG_SURFACE = 1 << 6
} GskDebugFlags;
typedef enum {
diff --git a/gsk/gskrendernode.c b/gsk/gskrendernode.c
index ecf38a27a0..a58b07102a 100644
--- a/gsk/gskrendernode.c
+++ b/gsk/gskrendernode.c
@@ -1370,6 +1370,17 @@ gsk_render_node_get_draw_context (GskRenderNode *node)
node->bounds.size.width, node->bounds.size.height);
cairo_clip (res);
+ if (GSK_DEBUG_CHECK (SURFACE))
+ {
+ cairo_save (res);
+ cairo_rectangle (res,
+ node->bounds.origin.x + 1, node->bounds.origin.y + 1,
+ node->bounds.size.width - 2, node->bounds.size.height - 2);
+ cairo_set_source_rgba (res, 1, 0, 0, 0.5);
+ cairo_stroke (res);
+ cairo_restore (res);
+ }
+
return res;
}