diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c index 1e693839..b3e1b03f 100644 --- a/libweston/backend-drm/drm.c +++ b/libweston/backend-drm/drm.c @@ -946,7 +946,7 @@ drm_repaint_flush_device(struct drm_device *device) { struct drm_backend *b = device->backend; struct drm_pending_state *pending_state; - struct weston_output *base; + struct drm_output_state *output_state; int ret; pending_state = device->repaint_data; @@ -964,15 +964,13 @@ drm_repaint_flush_device(struct drm_device *device) if (ret == 0) return; - wl_list_for_each(base, &b->compositor->output_list, link) { - struct drm_output *tmp = to_drm_output(base); - if (!tmp || tmp->device != device) - continue; + wl_list_for_each(output_state, &pending_state->output_list, link) { + struct drm_output *tmp = output_state->output; if (ret == -EBUSY) - weston_output_schedule_repaint_restart(base); + weston_output_schedule_repaint_restart(&tmp->base); else - weston_output_schedule_repaint_reset(base); + weston_output_schedule_repaint_reset(&tmp->base); } }