Add comments and whitespace to repaint machinery
repaint_needed / repaint_scheduled are surprisingly subtle. Explode the conditional with side-effects into more obvious separate calls, and document what they do. Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
+21
-6
@@ -2335,15 +2335,30 @@ output_repaint_timer_handler(void *data)
|
|||||||
{
|
{
|
||||||
struct weston_output *output = data;
|
struct weston_output *output = data;
|
||||||
struct weston_compositor *compositor = output->compositor;
|
struct weston_compositor *compositor = output->compositor;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (output->repaint_needed &&
|
/* If we're sleeping, drop the repaint machinery entirely; we will
|
||||||
compositor->state != WESTON_COMPOSITOR_SLEEPING &&
|
* explicitly repaint all outputs when we come back. */
|
||||||
compositor->state != WESTON_COMPOSITOR_OFFSCREEN &&
|
if (compositor->state == WESTON_COMPOSITOR_SLEEPING ||
|
||||||
weston_output_repaint(output) == 0)
|
compositor->state == WESTON_COMPOSITOR_OFFSCREEN)
|
||||||
return 0;
|
goto err;
|
||||||
|
|
||||||
|
/* We don't actually need to repaint this output; drop it from
|
||||||
|
* repaint until something causes damage. */
|
||||||
|
if (!output->repaint_needed)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
/* If repaint fails, we aren't going to get weston_output_finish_frame
|
||||||
|
* to trigger a new repaint, so drop it from repaint and hope
|
||||||
|
* something later schedules a successful repaint. */
|
||||||
|
ret = weston_output_repaint(output);
|
||||||
|
if (ret != 0)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err:
|
||||||
weston_output_schedule_repaint_reset(output);
|
weston_output_schedule_repaint_reset(output);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user