diff --git a/present/present_wnmd.c b/present/present_wnmd.c index 23a8863fc..b0d79b80f 100644 --- a/present/present_wnmd.c +++ b/present/present_wnmd.c @@ -294,7 +294,9 @@ present_wnmd_check_flip(RRCrtcPtr crtc, if (x_off || y_off) return FALSE; - // TODO: Check for valid region? + /* Valid area must contain window (for simplicity for now just never flip when one is set). */ + if (valid) + return FALSE; /* Flip pixmap must have same dimensions as window */ if (window->drawable.width != pixmap->drawable.width || @@ -341,11 +343,11 @@ present_wnmd_check_flip_window (WindowPtr window) if (flip_pending) { if (!present_wnmd_check_flip(flip_pending->crtc, flip_pending->window, flip_pending->pixmap, - flip_pending->sync_flip, NULL, 0, 0, NULL)) + flip_pending->sync_flip, flip_pending->valid, 0, 0, NULL)) window_priv->flip_pending->abort_flip = TRUE; } else if (flip_active) { if (!present_wnmd_check_flip(flip_active->crtc, flip_active->window, flip_active->pixmap, - flip_active->sync_flip, NULL, 0, 0, NULL)) + flip_active->sync_flip, flip_active->valid, 0, 0, NULL)) present_wnmd_flips_stop(window); } @@ -353,7 +355,7 @@ present_wnmd_check_flip_window (WindowPtr window) xorg_list_for_each_entry(vblank, &window_priv->vblank, window_list) { if (vblank->queued && vblank->flip && !present_wnmd_check_flip(vblank->crtc, window, vblank->pixmap, - vblank->sync_flip, NULL, 0, 0, &reason)) { + vblank->sync_flip, vblank->valid, 0, 0, &reason)) { vblank->flip = FALSE; vblank->reason = reason; if (vblank->sync_flip)