diff options
author | Benjamin Otte <otte@redhat.com> | 2016-11-30 18:55:45 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2016-12-05 15:02:47 +0100 |
commit | e950a5190dcb0dfeebfbb2b1a31273e2d34c77b5 (patch) | |
tree | c3d7ff7c37e988c008b5b6b397db8e1dda99bc77 /gtk/inspector | |
parent | 358aca9e20dcd6a84bbbf5933c54a9219fabea92 (diff) | |
download | gtk+-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.c | 2 | ||||
-rw-r--r-- | gtk/inspector/recorder.h | 1 | ||||
-rw-r--r-- | gtk/inspector/renderrecording.c | 17 | ||||
-rw-r--r-- | gtk/inspector/renderrecording.h | 8 | ||||
-rw-r--r-- | gtk/inspector/window.c | 2 | ||||
-rw-r--r-- | gtk/inspector/window.h | 1 |
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 |