aboutsummaryrefslogtreecommitdiff
path: root/backend/drm
diff options
context:
space:
mode:
authorWill Daly <will.e.daly@gmail.com>2020-05-01 06:15:40 -0700
committerSimon Ser <contact@emersion.fr>2020-05-01 16:01:30 +0200
commit044a9f28d681408d805a8bcc02ec47050cb1eb85 (patch)
tree4645ef70afce142fe95e1adfdc821ce0fb95da2e /backend/drm
parent22d345d98200b421abf91b4b2700b101bdca2ce1 (diff)
Fix error when reconnecting external display
Reconnecting an external display fails on initial page-flip. This occurs when the pageflip_pending flag has been set on the connector at the time the monitor is removed. Once the connector's CRTC has been deallocated, page_flip_handler cannot find the connector by its crtc_id, so pageflip_pending will remain set. This causes initialization to fail when the monitor is reconnected with the error messages: Skipping pageflip on output 'X' Failed to initialize renderer on connector 'X': initial page-flip failed To fix this problem, clear the pageflip_pending flag when cleaning up the connector.
Diffstat (limited to 'backend/drm')
-rw-r--r--backend/drm/drm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index 89d89c03..b320ffb4 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -1677,6 +1677,7 @@ static void drm_connector_cleanup(struct wlr_drm_connector *conn) {
dealloc_crtc(conn);
conn->possible_crtc = 0;
conn->desired_mode = NULL;
+ conn->pageflip_pending = false;
wlr_signal_emit_safe(&conn->output.events.destroy, &conn->output);
break;
case WLR_DRM_CONN_DISCONNECTED: