Fix possible use of CRTC after monitor is unplugged

This commit is contained in:
Scott Anderson 2017-08-11 11:12:41 +12:00
parent 5465621d0a
commit fe2fbd0fad

View file

@ -785,14 +785,18 @@ static void page_flip_handler(int fd, unsigned seq,
struct wlr_backend_state *drm = struct wlr_backend_state *drm =
wl_container_of(output->renderer, drm, renderer); wl_container_of(output->renderer, drm, renderer);
output->pageflip_pending = false;
if (output->state != WLR_DRM_OUTPUT_CONNECTED) {
return;
}
struct wlr_drm_plane *plane = output->crtc->primary; struct wlr_drm_plane *plane = output->crtc->primary;
if (plane->front) { if (plane->front) {
gbm_surface_release_buffer(plane->gbm, plane->front); gbm_surface_release_buffer(plane->gbm, plane->front);
plane->front = NULL; plane->front = NULL;
} }
output->pageflip_pending = false; if (drm->session->active) {
if (output->state == WLR_DRM_OUTPUT_CONNECTED && drm->session->active) {
wl_signal_emit(&output->base->events.frame, output->base); wl_signal_emit(&output->base->events.frame, output->base);
} }
} }