diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c index 2072ce0c5..3be24e265 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/modesetting/drmmode_display.c @@ -1664,7 +1664,7 @@ static void drmmmode_prepare_modeset(ScrnInfoPtr scrn) ScreenPtr pScreen = scrn->pScreen; modesettingPtr ms = modesettingPTR(scrn); - if (ms->drmmode.pending_modeset) + if (!ms->drmmode.present_flipping || ms->drmmode.pending_modeset) return; /* diff --git a/hw/xfree86/drivers/modesetting/present.c b/hw/xfree86/drivers/modesetting/present.c index 421d70016..5828ce7da 100644 --- a/hw/xfree86/drivers/modesetting/present.c +++ b/hw/xfree86/drivers/modesetting/present.c @@ -444,6 +444,8 @@ ms_present_unflip(ScreenPtr screen, uint64_t event_id) } } + ms->drmmode.present_flipping = FALSE; + for (i = 0; i < config->num_crtc; i++) { xf86CrtcPtr crtc = config->crtc[i]; drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private; @@ -468,7 +470,6 @@ ms_present_unflip(ScreenPtr screen, uint64_t event_id) } present_event_notify(event_id, 0, 0); - ms->drmmode.present_flipping = FALSE; } #endif