diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 3d3ac7b5bb..13045dbfbb 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -15651,7 +15651,12 @@ gtk_widget_render (GtkWidget *widget, root = gtk_snapshot_finish (&snapshot); if (root != NULL) { - gtk_inspector_record_render (widget, renderer, window, region, root); + gtk_inspector_record_render (widget, + renderer, + window, + region, + context, + root); gsk_renderer_render (renderer, root, context); gsk_render_node_unref (root); 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