diff options
| author | Simon Ser <contact@emersion.fr> | 2021-04-14 22:41:44 +0200 | 
|---|---|---|
| committer | Kenny Levinsen <kl@kl.wtf> | 2021-04-14 23:56:56 +0200 | 
| commit | 053ebe7c278ba1e5a0c8c9f5559db23fad5a9eba (patch) | |
| tree | d26f43f41e84c49d9f7ebe5b304f2eff88441da4 /backend/drm/drm.c | |
| parent | 846e0838d658bdd4f03628396ba83fd5bba74320 (diff) | |
| download | wlroots-053ebe7c278ba1e5a0c8c9f5559db23fad5a9eba.tar.xz | |
backend/drm: terminate display on drmHandleEvent failure
Diffstat (limited to 'backend/drm/drm.c')
| -rw-r--r-- | backend/drm/drm.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 032623fa..f064c184 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -1506,12 +1506,17 @@ static void page_flip_handler(int fd, unsigned seq,  }  int handle_drm_event(int fd, uint32_t mask, void *data) { +	struct wlr_drm_backend *drm = data; +  	drmEventContext event = {  		.version = 3,  		.page_flip_handler2 = page_flip_handler,  	}; -	drmHandleEvent(fd, &event); +	if (drmHandleEvent(fd, &event) != 0) { +		wlr_log(WLR_ERROR, "drmHandleEvent failed"); +		wl_display_terminate(drm->display); +	}  	return 1;  } @@ -1528,7 +1533,7 @@ void restore_drm_outputs(struct wlr_drm_backend *drm) {  	time_t timeout = time(NULL) + 5;  	while (to_close && time(NULL) < timeout) { -		handle_drm_event(drm->fd, 0, NULL); +		handle_drm_event(drm->fd, 0, drm);  		size_t i = 0;  		struct wlr_drm_connector *conn;  		wl_list_for_each(conn, &drm->outputs, link) { | 
