xserver: Branch 'master'

Adam Jackson ajax at kemper.freedesktop.org
Mon Jan 2 19:21:23 UTC 2017


 os/WaitFor.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

New commits:
commit 1b42f9505ff3a39b441464f553442079b750fe88
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Dec 8 14:32:06 2016 +1000

    os: return 0 from check_timers if we touched any of them
    
    Fixes a regression introduced in 0b2f30834b1a9f. If a driver posts input
    events during a timer function (wacom and synaptics do this during tap
    timeouts), ProcessInputEvents() is not called for these events. There are no
    new events on any fds, so the events just sit in the queue waiting for
    something else to happen.
    
    Fix this by simply returning 0 from check_timers if we ran at least one of
    them or reset them all. This way the callers ospoll_wait will exit and
    continue with normal processing.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Keith Packard <keithp at keithp.com>

diff --git a/os/WaitFor.c b/os/WaitFor.c
index ff1c85e..613608f 100644
--- a/os/WaitFor.c
+++ b/os/WaitFor.c
@@ -143,7 +143,7 @@ check_timers(void)
 {
     OsTimerPtr timer;
 
-    while ((timer = first_timer()) != NULL) {
+    if ((timer = first_timer()) != NULL) {
         CARD32 now = GetTimeInMillis();
         int timeout = timer->expires - now;
 
@@ -157,6 +157,8 @@ check_timers(void)
             /* time has rewound.  reset the timers. */
             CheckAllTimers();
         }
+
+        return 0;
     }
     return -1;
 }


More information about the xorg-commit mailing list