diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 52bcae06b..bed6ba497 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -1762,6 +1762,10 @@ void scan_drm_connectors(struct wlr_drm_backend *drm, } } + if (wlr_conn && wlr_conn->lease) { + continue; + } + // If the hotplug event contains a connector ID, ignore any other // connector. if (event != NULL && event->connector_id != 0 && @@ -2150,6 +2154,7 @@ struct wlr_drm_lease *wlr_drm_create_lease(struct wlr_output **outputs, get_drm_connector_from_output(outputs[i]); conn->lease = lease; conn->crtc->lease = lease; + disconnect_drm_connector(conn); } return lease; @@ -2186,4 +2191,5 @@ void drm_lease_destroy(struct wlr_drm_lease *lease) { } free(lease); + scan_drm_connectors(drm, NULL); }