From: Michel Dänzer <michel.daenzer@xxxxxxx> When disabling TearFree, drmmode_crtc->scanout_id could remain as 1, but drmmode_set_mode_major would destroy drmmode_crtc->scanout[1], so scanout_do_update() would keep bailing, and the scanout buffer would stop being updated. Fixes freeze after disabling TearFree on a CRTC with active RandR rotation or other transform. Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> --- src/drmmode_display.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 536890d18..793027d50 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -846,6 +846,8 @@ drmmode_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, drmmode_crtc_update_tear_free(crtc); if (drmmode_crtc->tear_free) scanout_id = drmmode_crtc->scanout_id; + else + drmmode_crtc->scanout_id = 0; /* gamma is disabled in kernel driver for deep color */ if (pScrn->depth != 30) -- 2.17.0