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...
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 *
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user