- my $age = Time::HiRes::tv_interval($latest_update);
- if ($age < $remoteglotconf::update_max_interval) {
- my $wait = $remoteglotconf::update_max_interval + 0.01 - $age;
- $output_timer = AnyEvent->timer(after => $wait, cb => \&output);
+ my $wait = $remoteglotconf::update_max_interval - Time::HiRes::tv_interval($latest_update);
+ if (defined($pos_calculating_started)) {
+ my $new_pos_wait = $remoteglotconf::update_force_after_move - Time::HiRes::tv_interval($pos_calculating_started);
+ $wait = $new_pos_wait if ($new_pos_wait < $wait);
+ }
+ if (!$last_output_had_pv && has_pv($info)) {
+ if (!defined($pos_pv_started)) {
+ $pos_pv_started = [Time::HiRes::gettimeofday];
+ }
+ # We just got initial PV, and we're in a hurry since we gave out a blank one earlier,
+ # so give us just 200ms more to increase the quality and then force a display.
+ my $new_pos_wait = $remoteglotconf::update_force_after_move - Time::HiRes::tv_interval($pos_pv_started);
+ $wait = $new_pos_wait if ($new_pos_wait < $wait);
+ }
+ if ($wait > 0.0) {
+ $output_timer = AnyEvent->timer(after => $wait + 0.01, cb => \&output);