<p dir="ltr"><br>
On Mar 6, 2013 6:45 PM, "Kristian Høgsberg" <<a href="mailto:hoegsberg@gmail.com">hoegsberg@gmail.com</a>> wrote:<br>
><br>
> On Tue, Mar 05, 2013 at 05:30:28PM +0200, Ander Conselvan de Oliveira wrote:<br>
> > The core uses this region to clear from the primary plane damage the<br>
> > area that was repainted. If we add the old buffer damage to that, it<br>
> > may end up clearing more damage from the primary plane than it was<br>
> > intended.<br>
> > ---<br>
> >  src/gl-renderer.c |   10 +++++++---<br>
> >  1 file changed, 7 insertions(+), 3 deletions(-)<br>
> ><br>
> > diff --git a/src/gl-renderer.c b/src/gl-renderer.c<br>
> > index a5dc2f3..4c1bc23 100644<br>
> > --- a/src/gl-renderer.c<br>
> > +++ b/src/gl-renderer.c<br>
> > @@ -957,6 +957,7 @@ gl_renderer_repaint_output(struct weston_output *output,<br>
> >       EGLBoolean ret;<br>
> >       static int errored;<br>
> >       int32_t width, height, i;<br>
> > +     pixman_region32_t total_damage;<br>
> ><br>
> >       width = output->current->width +<br>
> >               output->border.left + output->border.right;<br>
> > @@ -987,10 +988,13 @@ gl_renderer_repaint_output(struct weston_output *output,<br>
> >                                     &go->buffer_damage[i],<br>
> >                                     output_damage);<br>
> ><br>
> > -     pixman_region32_union(output_damage, output_damage,<br>
> > -                           &go->buffer_damage[go->current_buffer]);<br>
> > +     pixman_region32_init(&total_damage);<br>
> > +     pixman_region32_copy(&total_damage,<br>
> > +                          &go->buffer_damage[go->current_buffer]);<br>
><br>
> Shouldn't total_damage still be the union of buffer_damage and<br>
> output_damage?</p>
<p dir="ltr">Yes, it should. But we already did the union in the loop above. That was actually one of your comments when you applied the buffer age patches, that we were doing the union twice.</p>
<p dir="ltr">Cheers,<br>
Ander</p>
<p dir="ltr">> > -     repaint_surfaces(output, output_damage);<br>
> > +     repaint_surfaces(output, &total_damage);<br>
> > +<br>
> > +     pixman_region32_fini(&total_damage);<br>
> ><br>
> >       if (gr->border.texture)<br>
> >               draw_border(output);<br>
> > --<br>
> > 1.7.10.4<br>
> ><br>
> > _______________________________________________<br>
> > wayland-devel mailing list<br>
> > <a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
> > <a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
> _______________________________________________<br>
> wayland-devel mailing list<br>
> <a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</p>