diff options
Diffstat (limited to 'backend/drm')
| -rw-r--r-- | backend/drm/drm.c | 9 | 
1 files changed, 6 insertions, 3 deletions
| diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 7700bd2d..b6b4baf6 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -355,9 +355,12 @@ static bool drm_crtc_commit(struct wlr_drm_connector *conn,  		}  	} else {  		drm_fb_clear(&crtc->primary->pending_fb); -		if (crtc->cursor != NULL) { -			drm_fb_clear(&crtc->cursor->pending_fb); -		} +		// The set_cursor() hook is a bit special: it's not really synchronized +		// to commit() or test(). Once set_cursor() returns true, the new +		// cursor is effectively committed. So don't roll it back here, or we +		// risk ending up in a state where we don't have a cursor FB but +		// wlr_drm_connector.cursor_enabled is true. +		// TODO: fix our output interface to avoid this issue.  	}  	return ok;  } | 
