compositor: don't schedule idle_repaint from calls to repaint

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.

[krh] Edited to just only clear repaint_scheduled, when we no longer have
a repaint scheduled.

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
dev
Ander Conselvan de Oliveira 13 years ago committed by Kristian Høgsberg
parent a4b7e20392
commit 22e22a55be
  1. 4
      compositor/compositor.c

@ -997,10 +997,10 @@ wlsc_output_finish_frame(struct wlsc_output *output, int msecs)
output->pending_scanout_buffer = NULL; output->pending_scanout_buffer = NULL;
} }
output->repaint_scheduled = 0;
if (output->repaint_needed) if (output->repaint_needed)
repaint(output, msecs); repaint(output, msecs);
else
output->repaint_scheduled = 0;
} }
WL_EXPORT void WL_EXPORT void

Loading…
Cancel
Save