2008-09-24 Emmanuele Bassi <ebassi@linux.intel.com>
authorEmmanuele Bassi <ebassi@openedhand.com>
Wed, 24 Sep 2008 10:12:23 +0000 (10:12 +0000)
committerEmmanuele Bassi <ebassi@openedhand.com>
Wed, 24 Sep 2008 10:12:23 +0000 (10:12 +0000)
Bug 1130 - CLUTTER_MOTION is not emitted when time goes backwards.

* clutter/clutter-main.c (clutter_do_event): Check for time
rollbacks inside the motion event throttling. (Pierce Liu)

ChangeLog
clutter/clutter-main.c

index ee714a4..57ce456 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-09-24  Emmanuele Bassi  <ebassi@linux.intel.com>
+
+       Bug 1130 - CLUTTER_MOTION is not emitted when time goes backwards.
+
+       * clutter/clutter-main.c (clutter_do_event): Check for time
+       rollbacks inside the motion event throttling. (Pierce Liu)
+
 2008-09-23  Emmanuele Bassi  <ebassi@linux.intel.com>
 
        * clutter/clutter-timeout-pool.c: Reword previous commit.
index a6e0328..c73a78b 100644 (file)
@@ -1903,7 +1903,16 @@ clutter_do_event (ClutterEvent *event)
                   delta,
                   event->any.time);
 
-            if (event->any.time < (local_motion_time + delta))
+            /* we need to guard against roll-overs and the
+             * case where the time is rolled backwards and
+             * the backend is not ensuring a monotonic clock
+             * for the events.
+             *
+             * see:
+             *   http://bugzilla.openedhand.com/show_bug.cgi?id=1130
+             */
+            if (event->any.time >= local_motion_time &&
+                event->any.time < (local_motion_time + delta))
               break;
             else
               local_motion_time = event->any.time;