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: 7817949314 ("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 <diego.viola@gmail.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2016-11-03 10:18:32 +00:00
parent 47da17fe74
commit 40e3be3436
1 changed files with 0 additions and 4 deletions

View File

@ -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;
}