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:
parent
47da17fe74
commit
40e3be3436
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue