On Tue, Aug 18, 2015 at 01:22:15PM +1200, Bryan Christianson wrote:
> @@ -120,7 +138,14 @@ start_adjust(void)
>  
>    UTI_DiffTimevalsToDouble(&elapsed, &T1, &T0);
>    accrued_error = elapsed * current_freq;
> -  predicted_error = DRIFT_REMOVAL_INTERVAL / 2.0 * current_freq;
> +
> +  UTI_DiffTimevalsToDouble(&drift_removal_elapsed, &T1, &Tdrift);
> +  predicted_error = MAX(0.0, (current_drift_removal_interval -  
> drift_removal_elapsed) / 2.0 * current_freq);

If current_freq was negative, wouldn't predicted_error end up as zero?
I think drift_removal_elapsed needs to be clamped before
predicted_error is calculated. It shouldn't be negative and it
shouldn't be larger than current_drift_removal_interval, to not get an
insane error with both backward and forward clock jumps.

-- 
Miroslav Lichvar

-- 
To unsubscribe email [email protected] with "unsubscribe" 
in the subject.
For help email [email protected] with "help" in the 
subject.
Trouble?  Email [email protected].

Reply via email to