diff options
Diffstat (limited to 'hw/xfree86')
-rw-r--r-- | hw/xfree86/drivers/modesetting/drmmode_display.h | 1 | ||||
-rw-r--r-- | hw/xfree86/drivers/modesetting/pageflip.c | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.h b/hw/xfree86/drivers/modesetting/drmmode_display.h index 75c3195e4..2711a5776 100644 --- a/hw/xfree86/drivers/modesetting/drmmode_display.h +++ b/hw/xfree86/drivers/modesetting/drmmode_display.h @@ -123,6 +123,7 @@ typedef struct { Bool dri2_flipping; Bool present_flipping; + Bool flip_bo_import_failed; Bool dri2_enable; Bool present_enable; diff --git a/hw/xfree86/drivers/modesetting/pageflip.c b/hw/xfree86/drivers/modesetting/pageflip.c index 830ec7599..cb11bd4f9 100644 --- a/hw/xfree86/drivers/modesetting/pageflip.c +++ b/hw/xfree86/drivers/modesetting/pageflip.c @@ -285,9 +285,16 @@ ms_do_pageflip(ScreenPtr screen, new_front_bo.height = new_front->drawable.height; if (drmmode_bo_import(&ms->drmmode, &new_front_bo, &ms->drmmode.fb_id)) { - xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: Import BO failed: %s\n", - log_prefix, strerror(errno)); + if (!ms->drmmode.flip_bo_import_failed) { + xf86DrvMsg(scrn->scrnIndex, X_WARNING, "%s: Import BO failed: %s\n", + log_prefix, strerror(errno)); + ms->drmmode.flip_bo_import_failed = TRUE; + } goto error_out; + } else { + if (ms->drmmode.flip_bo_import_failed && + new_front != screen->GetScreenPixmap(screen)) + ms->drmmode.flip_bo_import_failed = FALSE; } flags = DRM_MODE_PAGE_FLIP_EVENT; |