mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-22 13:38:13 +02:00
libweston: Reset repaint schedule for all repainted outputs when repaint cancel
All outputs is canceled repaint when a output repaint is failed. At that time, the output whose repaint is success is not scheduled because the repaint status of that is still REPAINT_AWAITING_COMPLETION. Therefore, we need to reset repaint schedule for all repainted outputs. Signed-off-by: Tomohito Esaki <etom@igel.co.jp> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
parent
09bfcd6e1e
commit
7f4d9ffefa
2 changed files with 11 additions and 0 deletions
|
|
@ -2450,6 +2450,8 @@ weston_output_maybe_repaint(struct weston_output *output, struct timespec *now,
|
|||
int ret = 0;
|
||||
int64_t msec_to_repaint;
|
||||
|
||||
output->repainted = false;
|
||||
|
||||
/* We're not ready yet; come back to make a decision later. */
|
||||
if (output->repaint_status != REPAINT_SCHEDULED)
|
||||
return ret;
|
||||
|
|
@ -2479,6 +2481,7 @@ weston_output_maybe_repaint(struct weston_output *output, struct timespec *now,
|
|||
if (ret != 0)
|
||||
goto err;
|
||||
|
||||
output->repainted = true;
|
||||
return ret;
|
||||
|
||||
err:
|
||||
|
|
@ -2550,6 +2553,11 @@ output_repaint_timer_handler(void *data)
|
|||
compositor->backend->repaint_flush(compositor,
|
||||
repaint_data);
|
||||
} else {
|
||||
wl_list_for_each(output, &compositor->output_list, link) {
|
||||
if (output->repainted)
|
||||
weston_output_schedule_repaint_reset(output);
|
||||
}
|
||||
|
||||
if (compositor->backend->repaint_cancel)
|
||||
compositor->backend->repaint_cancel(compositor,
|
||||
repaint_data);
|
||||
|
|
|
|||
|
|
@ -212,6 +212,9 @@ struct weston_output {
|
|||
* if set, a repaint will eventually occur. */
|
||||
bool repaint_needed;
|
||||
|
||||
/** Used only between repaint_begin and repaint_cancel. */
|
||||
bool repainted;
|
||||
|
||||
/** State of the repaint loop */
|
||||
enum {
|
||||
REPAINT_NOT_SCHEDULED = 0, /**< idle; no repaint will occur */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue