On Thu, Aug 09, 2012 at 03:35:49PM +0100, Rob Bradford wrote:
> From: Rob Bradford <[email protected]>
> 
> To handle the case where wall clock time jumps forwards by a large amount or
> backwards limit the execution of the spring calculation loop.
> 
> We do this by forcing the spring update timestamp to being no older that 1s of
> the most current time we've been given. We also present a log message if the
> timestamp jumps more than expected.

Thanks, hopefully we can avoid those
infinite-for-all-practical-purposes loops with this check.

Kristian


> ---
>  src/util.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/src/util.c b/src/util.c
> index fa360c2..4ff451a 100644
> --- a/src/util.c
> +++ b/src/util.c
> @@ -46,12 +46,15 @@ weston_spring_update(struct weston_spring *spring, 
> uint32_t msec)
>  {
>       double force, v, current, step;
>  
> -     /* Avoid entering into an infinite loop */
> -     if (msec - spring->timestamp > UINT32_MAX / 2) {
> -             weston_log("timestamps going backwards (from %u to %u)\n",
> -                             spring->timestamp, msec);
> -             spring->current = spring->previous = spring->target;
> -             return;
> +     /* Limit the number of executions of the loop below by ensuring that
> +      * the timestamp for last update of the spring is no more than 1s ago.
> +      * This handles the case where time moves backwards or forwards in
> +      * large jumps.
> +      */
> +     if (msec - spring->timestamp > 1000) {
> +             weston_log("unexpectedly large timestamp jump (from %u to 
> %u)\n",
> +                        spring->timestamp, msec);
> +             spring->timestamp = msec - 1000;
>       }
>  
>       step = 0.01;
> -- 
> 1.7.11.2
> 
> _______________________________________________
> wayland-devel mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to