xserver: Branch 'master'

Michel Dänzer daenzer at kemper.freedesktop.org
Tue Jan 10 03:43:33 UTC 2017


 present/present.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit e473b2bc016adacfe3fa47fdf6a8ce9f8cddff62
Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Fri Nov 25 17:34:05 2016 +0900

    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: bab0f450a719 ("present: Fix presentation of flips out of order")
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98854
    Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

diff --git a/present/present.c b/present/present.c
index a7ca06e..ef89045 100644
--- a/present/present.c
+++ b/present/present.c
@@ -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;
         }
     }


More information about the xorg-commit mailing list