mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
clutter/stage-cogl: Stop painting redraw clip outline
We already have a better way to paint the redraw clip: Painting the damage region paints the individual rects of the clip region and not only the bounding rect. So stop painting an outline around the redraw clip bounding rect when CLUTTER_DEBUG_REDRAWS is set. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1113
This commit is contained in:
parent
3fed768db4
commit
afe4cd482e
@ -581,19 +581,15 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
|
|||||||
gboolean has_buffer_age;
|
gboolean has_buffer_age;
|
||||||
gboolean do_swap_buffer;
|
gboolean do_swap_buffer;
|
||||||
gboolean swap_with_damage;
|
gboolean swap_with_damage;
|
||||||
ClutterActor *wrapper;
|
|
||||||
cairo_region_t *redraw_clip;
|
cairo_region_t *redraw_clip;
|
||||||
cairo_region_t *queued_redraw_clip = NULL;
|
cairo_region_t *queued_redraw_clip = NULL;
|
||||||
cairo_region_t *fb_clip_region;
|
cairo_region_t *fb_clip_region;
|
||||||
cairo_region_t *swap_region;
|
cairo_region_t *swap_region;
|
||||||
cairo_rectangle_int_t redraw_rect;
|
|
||||||
gboolean clip_region_empty;
|
gboolean clip_region_empty;
|
||||||
float fb_scale;
|
float fb_scale;
|
||||||
int fb_width, fb_height;
|
int fb_width, fb_height;
|
||||||
int buffer_age;
|
int buffer_age;
|
||||||
|
|
||||||
wrapper = CLUTTER_ACTOR (stage_cogl->wrapper);
|
|
||||||
|
|
||||||
clutter_stage_view_get_layout (view, &view_rect);
|
clutter_stage_view_get_layout (view, &view_rect);
|
||||||
fb_scale = clutter_stage_view_get_scale (view);
|
fb_scale = clutter_stage_view_get_scale (view);
|
||||||
fb_width = cogl_framebuffer_get_width (fb);
|
fb_width = cogl_framebuffer_get_width (fb);
|
||||||
@ -738,47 +734,6 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
|
|||||||
paint_stage (stage_cogl, view, redraw_clip);
|
paint_stage (stage_cogl, view, redraw_clip);
|
||||||
}
|
}
|
||||||
|
|
||||||
cairo_region_get_extents (redraw_clip, &redraw_rect);
|
|
||||||
|
|
||||||
if (may_use_clipped_redraw &&
|
|
||||||
G_UNLIKELY ((clutter_paint_debug_flags & CLUTTER_DEBUG_REDRAWS)))
|
|
||||||
{
|
|
||||||
CoglContext *ctx = cogl_framebuffer_get_context (fb);
|
|
||||||
static CoglPipeline *outline = NULL;
|
|
||||||
ClutterActor *actor = CLUTTER_ACTOR (wrapper);
|
|
||||||
float x_1 = redraw_rect.x;
|
|
||||||
float x_2 = redraw_rect.x + redraw_rect.width;
|
|
||||||
float y_1 = redraw_rect.y;
|
|
||||||
float y_2 = redraw_rect.y + redraw_rect.height;
|
|
||||||
CoglVertexP2 quad[4] = {
|
|
||||||
{ x_1, y_1 },
|
|
||||||
{ x_2, y_1 },
|
|
||||||
{ x_2, y_2 },
|
|
||||||
{ x_1, y_2 }
|
|
||||||
};
|
|
||||||
CoglPrimitive *prim;
|
|
||||||
CoglMatrix modelview;
|
|
||||||
|
|
||||||
if (outline == NULL)
|
|
||||||
{
|
|
||||||
outline = cogl_pipeline_new (ctx);
|
|
||||||
cogl_pipeline_set_color4ub (outline, 0xff, 0x00, 0x00, 0xff);
|
|
||||||
}
|
|
||||||
|
|
||||||
prim = cogl_primitive_new_p2 (ctx,
|
|
||||||
COGL_VERTICES_MODE_LINE_LOOP,
|
|
||||||
4, /* n_vertices */
|
|
||||||
quad);
|
|
||||||
|
|
||||||
cogl_framebuffer_push_matrix (fb);
|
|
||||||
cogl_matrix_init_identity (&modelview);
|
|
||||||
_clutter_actor_apply_modelview_transform (actor, &modelview);
|
|
||||||
cogl_framebuffer_set_modelview_matrix (fb, &modelview);
|
|
||||||
cogl_framebuffer_draw_primitive (fb, outline, prim);
|
|
||||||
cogl_framebuffer_pop_matrix (fb);
|
|
||||||
cogl_object_unref (prim);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* XXX: It seems there will be a race here in that the stage
|
/* XXX: It seems there will be a race here in that the stage
|
||||||
* window may be resized before the cogl_onscreen_swap_region
|
* window may be resized before the cogl_onscreen_swap_region
|
||||||
* is handled and so we may copy the wrong region. I can't
|
* is handled and so we may copy the wrong region. I can't
|
||||||
|
Loading…
Reference in New Issue
Block a user