summaryrefslogtreecommitdiff
path: root/gtk/inspector
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2016-11-30 18:55:45 +0100
committerBenjamin Otte <otte@redhat.com>2016-12-05 15:02:47 +0100
commite950a5190dcb0dfeebfbb2b1a31273e2d34c77b5 (patch)
treec3d7ff7c37e988c008b5b6b397db8e1dda99bc77 /gtk/inspector
parent358aca9e20dcd6a84bbbf5933c54a9219fabea92 (diff)
downloadgtk+-e950a5190dcb0dfeebfbb2b1a31273e2d34c77b5.tar.gz
inspector: Pass the drawing context into the recorder
That way we can capture both the actual changes (clip region) and the area that was redrawn (render region), which in OpenGL might not be identical. Nothing shows the render region yet though...
Diffstat (limited to 'gtk/inspector')
-rw-r--r--gtk/inspector/recorder.c2
-rw-r--r--gtk/inspector/recorder.h1
-rw-r--r--gtk/inspector/renderrecording.c17
-rw-r--r--gtk/inspector/renderrecording.h8
-rw-r--r--gtk/inspector/window.c2
-rw-r--r--gtk/inspector/window.h1
6 files changed, 25 insertions, 6 deletions
diff --git a/gtk/inspector/recorder.c b/gtk/inspector/recorder.c
index 07d2fb4e51..6641fce2cb 100644
--- a/gtk/inspector/recorder.c
+++ b/gtk/inspector/recorder.c
@@ -490,6 +490,7 @@ gtk_inspector_recorder_record_render (GtkInspectorRecorder *recorder,
GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
+ GdkDrawingContext *context,
GskRenderNode *node)
{
GtkInspectorRecording *recording;
@@ -506,6 +507,7 @@ gtk_inspector_recorder_record_render (GtkInspectorRecorder *recorder,
gdk_window_get_width (window),
gdk_window_get_height (window) },
region,
+ gdk_drawing_context_get_clip (context),
node);
gtk_inspector_recorder_add_recording (recorder, recording);
g_object_unref (recording);
diff --git a/gtk/inspector/recorder.h b/gtk/inspector/recorder.h
index 676f3f1660..d15431d303 100644
--- a/gtk/inspector/recorder.h
+++ b/gtk/inspector/recorder.h
@@ -53,6 +53,7 @@ void gtk_inspector_recorder_record_render (GtkInspectorRec
GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
+ GdkDrawingContext *context,
GskRenderNode *node);
G_END_DECLS
diff --git a/gtk/inspector/renderrecording.c b/gtk/inspector/renderrecording.c
index f3bb0d1599..48fd34184b 100644
--- a/gtk/inspector/renderrecording.c
+++ b/gtk/inspector/renderrecording.c
@@ -27,7 +27,8 @@ gtk_inspector_render_recording_finalize (GObject *object)
{
GtkInspectorRenderRecording *recording = GTK_INSPECTOR_RENDER_RECORDING (object);
- g_clear_pointer (&recording->clip, cairo_region_destroy);
+ g_clear_pointer (&recording->clip_region, cairo_region_destroy);
+ g_clear_pointer (&recording->render_region, cairo_region_destroy);
g_clear_pointer (&recording->node, gsk_render_node_unref);
g_clear_pointer (&recording->profiler_info, g_free);
@@ -63,7 +64,8 @@ GtkInspectorRecording *
gtk_inspector_render_recording_new (gint64 timestamp,
GskProfiler *profiler,
const GdkRectangle *area,
- const cairo_region_t *clip,
+ const cairo_region_t *clip_region,
+ const cairo_region_t *render_region,
GskRenderNode *node)
{
GtkInspectorRenderRecording *recording;
@@ -74,7 +76,8 @@ gtk_inspector_render_recording_new (gint64 timestamp,
collect_profiler_info (recording, profiler);
recording->area = *area;
- recording->clip = cairo_region_copy (clip);
+ recording->clip_region = cairo_region_copy (clip_region);
+ recording->render_region = cairo_region_copy (render_region);
recording->node = gsk_render_node_ref (node);
return GTK_INSPECTOR_RECORDING (recording);
@@ -89,7 +92,13 @@ gtk_inspector_render_recording_get_node (GtkInspectorRenderRecording *recording)
const cairo_region_t *
gtk_inspector_render_recording_get_clip_region (GtkInspectorRenderRecording *recording)
{
- return recording->clip;
+ return recording->clip_region;
+}
+
+const cairo_region_t *
+gtk_inspector_render_recording_get_render_region (GtkInspectorRenderRecording *recording)
+{
+ return recording->render_region;
}
const cairo_rectangle_int_t *
diff --git a/gtk/inspector/renderrecording.h b/gtk/inspector/renderrecording.h
index f84a87e609..e17ae9dea1 100644
--- a/gtk/inspector/renderrecording.h
+++ b/gtk/inspector/renderrecording.h
@@ -41,7 +41,8 @@ typedef struct _GtkInspectorRenderRecording
GtkInspectorRecording parent;
GdkRectangle area;
- cairo_region_t *clip;
+ cairo_region_t *clip_region;
+ cairo_region_t *render_region;
GskRenderNode *node;
char *profiler_info;
} GtkInspectorRenderRecording;
@@ -57,12 +58,15 @@ GtkInspectorRecording *
gtk_inspector_render_recording_new (gint64 timestamp,
GskProfiler *profiler,
const GdkRectangle *area,
- const cairo_region_t *clip,
+ const cairo_region_t *clip_region,
+ const cairo_region_t *render_region,
GskRenderNode *node);
GskRenderNode * gtk_inspector_render_recording_get_node (GtkInspectorRenderRecording *recording);
const cairo_region_t *
gtk_inspector_render_recording_get_clip_region (GtkInspectorRenderRecording *recording);
+const cairo_region_t *
+ gtk_inspector_render_recording_get_render_region (GtkInspectorRenderRecording *recording);
const cairo_rectangle_int_t *
gtk_inspector_render_recording_get_area (GtkInspectorRenderRecording *recording);
const char * gtk_inspector_render_recording_get_profiler_info
diff --git a/gtk/inspector/window.c b/gtk/inspector/window.c
index b21f5c9842..fb3231ee5c 100644
--- a/gtk/inspector/window.c
+++ b/gtk/inspector/window.c
@@ -346,6 +346,7 @@ gtk_inspector_record_render (GtkWidget *widget,
GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
+ GdkDrawingContext *context,
GskRenderNode *node)
{
GtkInspectorWindow *iw;
@@ -363,6 +364,7 @@ gtk_inspector_record_render (GtkWidget *widget,
renderer,
window,
region,
+ context,
node);
}
diff --git a/gtk/inspector/window.h b/gtk/inspector/window.h
index 671e759e0e..3f330d7af5 100644
--- a/gtk/inspector/window.h
+++ b/gtk/inspector/window.h
@@ -110,6 +110,7 @@ void gtk_inspector_record_render (GtkWidget *widget,
GskRenderer *renderer,
GdkWindow *window,
const cairo_region_t *region,
+ GdkDrawingContext *context,
GskRenderNode *node);
G_END_DECLS