mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-02-17 05:30:27 +01:00
present: Only call present_flip_notify if vblank->queued == FALSE
We are no longer using the present_flip_queue list only for presents which have already been submitted to the driver for page flipping, but also for those which we are queueing up to be flipped later, marked with vblank->queued == TRUE. We were incorrectly calling present_flip_notify for such entries, failing the assertion in present_flip_notify (or presumably resulting in other undesirable behaviour with assertions disabled). Reproduction recipe: Run the JavaFX test case referenced by https://bugs.freedesktop.org/show_bug.cgi?id=98831#c6 and alt-tab out of it while it's fullscreen. May take a few attempts to hit the assertion failure. Fixes:bab0f450a7("present: Fix presentation of flips out of order") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98854 Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commite473b2bc01)
This commit is contained in:
parent
943e3cbeb0
commit
27a2772cf3
1 changed files with 4 additions and 1 deletions
|
|
@ -536,7 +536,10 @@ present_event_notify(uint64_t event_id, uint64_t ust, uint64_t msc)
|
|||
}
|
||||
xorg_list_for_each_entry(vblank, &present_flip_queue, event_queue) {
|
||||
if (vblank->event_id == event_id) {
|
||||
present_flip_notify(vblank, ust, msc);
|
||||
if (vblank->queued)
|
||||
present_execute(vblank, ust, msc);
|
||||
else
|
||||
present_flip_notify(vblank, ust, msc);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue