From 40e3be34367141c952678f456f0e0d4632b6c266 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Thu, 3 Nov 2016 10:18:32 +0000 Subject: [PATCH] sna/dri2: Complete the final flip in a chain after the window is destroyed When the pending flip is queued, we update all the Windows to use the next bo as their rendering target. However, that bo is not yet the scanout until the future flip is performed. If the current fullscreen Window is destroyed, we still must allow that flip to proceed or else the old bo is left on the scanout. And yes, this is indeed a fix to one of the debug patches that intended to detect the error causing #93844. Irony. Fixes: 7817949314a2 ("sna/dri2: Avoiding marking a pending-signal on a dead Drawable") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93844 Reported-by: Diego Viola Signed-off-by: Chris Wilson --- src/sna/sna_dri2.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c index 72cb1280..22a6f6ce 100644 --- a/src/sna/sna_dri2.c +++ b/src/sna/sna_dri2.c @@ -2845,9 +2845,6 @@ sna_dri2_flip_continue(struct sna_dri2_event *info) info->type = info->flip_continue; info->flip_continue = 0; - if (info->draw == NULL) - return false; - assert(!info->signal); info->signal = info->type == FLIP_THROTTLE; @@ -2866,7 +2863,6 @@ sna_dri2_flip_continue(struct sna_dri2_event *info) info->sna->dri2.flip_pending == info); info->sna->dri2.flip_pending = info; info->queued = true; - assert(info->draw); return true; }