summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/drmmode_display.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index bd5eb5e..2a22777 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -790,11 +790,17 @@ drmmode_crtc_scanout_update(xf86CrtcPtr crtc, DisplayModePtr mode,
*fb = amdgpu_pixmap_get_fb(drmmode_crtc->scanout[scanout_id].pixmap);
*x = *y = 0;
- amdgpu_scanout_do_update(crtc, scanout_id,
- screen->GetWindowPixmap(screen->root),
- extents);
- RegionEmpty(DamageRegion(drmmode_crtc->scanout_damage));
- amdgpu_glamor_finish(scrn);
+ if (amdgpu_scanout_do_update(crtc, scanout_id,
+ screen->GetWindowPixmap(screen->root),
+ extents)) {
+ RegionEmpty(DamageRegion(drmmode_crtc->scanout_damage));
+ amdgpu_glamor_finish(scrn);
+
+ if (!drmmode_crtc->flip_pending) {
+ amdgpu_drm_abort_entry(drmmode_crtc->
+ scanout_update_pending);
+ }
+ }
}
}