aboutsummaryrefslogtreecommitdiff
path: root/include/backend/drm
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-09-28 10:00:40 +0200
committeremersion <contact@emersion.fr>2018-09-28 10:00:40 +0200
commit79dd9ba15170f7054523fc37e10ea564661d648e (patch)
tree1292835a18abaa6230c048afbfaf8d907d135693 /include/backend/drm
parent19f3804548a37582f65cb4279545564dad0ec0d1 (diff)
backend/drm: don't free connector immediately
When a pageflip is pending, we'll get a DRM event for the connector in the future. We don't want to free the connector immediately otherwise we'll use-after-free in the pageflip handler. This commit adds a new state, "DISAPPEARED". This asks the pageflip handler to destroy the output after it's done pageflipping.
Diffstat (limited to 'include/backend/drm')
-rw-r--r--include/backend/drm/drm.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h
index ac23cd9a..3b01b64f 100644
--- a/include/backend/drm/drm.h
+++ b/include/backend/drm/drm.h
@@ -104,10 +104,14 @@ struct wlr_drm_backend {
};
enum wlr_drm_connector_state {
+ // Connector is available but no output is plugged in
WLR_DRM_CONN_DISCONNECTED,
+ // An output just has been plugged in and is waiting for a modeset
WLR_DRM_CONN_NEEDS_MODESET,
WLR_DRM_CONN_CLEANUP,
WLR_DRM_CONN_CONNECTED,
+ // Connector disappeared, waiting for being destroyed on next page-flip
+ WLR_DRM_CONN_DISAPPEARED,
};
struct wlr_drm_mode {