From: Michel Dänzer <michel.daenzer@xxxxxxx> Not doing so could break DPMS with TearFree. Reported-and-Tested-by: furkan on IRC Fixes: 9090309e057d ("Wait for pending flips to complete before turning off an output or CRTC") Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> --- src/drmmode_display.c | 2 +- src/drmmode_display.h | 1 + src/radeon_kms.c | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 14d86c7..96a3c3b 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -2174,7 +2174,7 @@ static const xf86CrtcConfigFuncsRec drmmode_xf86crtc_config_funcs = { drmmode_xf86crtc_resize }; -static void +void drmmode_clear_pending_flip(xf86CrtcPtr crtc) { drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; diff --git a/src/drmmode_display.h b/src/drmmode_display.h index 24e3efb..53c7926 100644 --- a/src/drmmode_display.h +++ b/src/drmmode_display.h @@ -154,6 +154,7 @@ extern int drmmode_get_crtc_id(xf86CrtcPtr crtc); extern int drmmode_get_height_align(ScrnInfoPtr scrn, uint32_t tiling); extern int drmmode_get_pitch_align(ScrnInfoPtr scrn, int bpe, uint32_t tiling); extern int drmmode_get_base_align(ScrnInfoPtr scrn, int bpe, uint32_t tiling); +extern void drmmode_clear_pending_flip(xf86CrtcPtr crtc); Bool radeon_do_pageflip(ScrnInfoPtr scrn, ClientPtr client, uint32_t new_front_handle, uint64_t id, void *data, diff --git a/src/radeon_kms.c b/src/radeon_kms.c index e353d66..c10fb42 100644 --- a/src/radeon_kms.c +++ b/src/radeon_kms.c @@ -786,7 +786,7 @@ radeon_scanout_flip_abort(xf86CrtcPtr crtc, void *event_data) drmmode_crtc_private_ptr drmmode_crtc = event_data; drmmode_crtc->scanout_update_pending = FALSE; - drmmode_crtc->flip_pending = FALSE; + drmmode_clear_pending_flip(crtc); } static void -- 2.9.3