diff options
author | Will Daly <will.e.daly@gmail.com> | 2020-05-01 06:15:40 -0700 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-05-01 16:01:30 +0200 |
commit | 044a9f28d681408d805a8bcc02ec47050cb1eb85 (patch) | |
tree | 4645ef70afce142fe95e1adfdc821ce0fb95da2e /backend/drm | |
parent | 22d345d98200b421abf91b4b2700b101bdca2ce1 (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.c | 1 |
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: |