[PATCH 1/2] compositor: don't schedule idle_repaint from calls to repaint
Ander Conselvan de Oliveira
conselvan2 at gmail.com
Mon Oct 24 12:22:44 PDT 2011
Em 24-10-2011 18:57, Kristian Høgsberg escreveu:
> On Mon, Oct 24, 2011 at 9:30 AM, Ander Conselvan de Oliveira
> <ander.conselvan.de.oliveira at intel.com> wrote:
>> wlsc_output_repaint may call wlsc_surface_damage indirectly through
>> wlsc_output_set_cursor. If this happens in the call made from repaint,
>> one ends up with repaint being called from both idle_repaint and
>> wlsc_output_finish_frame.
>>
>> Fix this by setting output->repaint_scheduled to 1 before calling
>> wlsc_output_repaint in the function repaint.
>
> Ah, yes, I see. Good catch. I think we want a slightly different fix
> though. The damage that is added in wlsc_output_set_cursor() gets
> fixed up in the following repaint, so we need to make sure
> repaint_needed is cleared to 0 after wlsc_output_repaint(). I would
> prefer to only clear repaint_scheduled in the else clause of if
> (output->repaint_needed) in wlsc_output_finish_frame(), and just not
> set it to 1 in repaint() (see attached patch). That way we only clear
> repaint_scheduled, when there really isn't a repaint scheduled. Does
> that work for you?
Yep. That's a lot better.
Ander
More information about the wayland-devel
mailing list