X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=remoteglot.pl;h=b480b80f8da1b9aa443c4bf54785a4f58e90a76a;hb=224bcaaa77ed980993f3c7818a1c7de730d0fbab;hp=42db14667b50313ffe9f36efe10b76ee3513145c;hpb=b24a86cec9d0c835eae094b5f82c2197176e9c17;p=remoteglot diff --git a/remoteglot.pl b/remoteglot.pl index 42db146..b480b80 100755 --- a/remoteglot.pl +++ b/remoteglot.pl @@ -24,6 +24,7 @@ my $engine2_cmdline = "./stockfish_13111119_x64_modern_sse42"; my $telltarget = undef; # undef to be silent my @tell_intervals = (5, 20, 60, 120, 240, 480, 960); # after each move my $uci_assume_full_compliance = 0; # dangerous :-) +my $update_max_interval = 2.0; my $second_engine_start_depth = 8; my @masters = ( 'Sesse', @@ -35,6 +36,7 @@ my @masters = ( # Program starts here $SIG{ALRM} = sub { output_screen(); }; +my $latest_update = undef; $| = 1; @@ -186,22 +188,22 @@ while (1) { if ($nfound > 0 && vec($rout, fileno($engine->{'read'}), 1) == 1) { my @lines = read_lines($engine); for my $line (@lines) { + next if $line =~ /(upper|lower)bound/; handle_uci($engine, $line, 1); } $sleep = 0; - # don't update too often - Time::HiRes::alarm(0.2); + output_screen(); } if ($nfound > 0 && vec($rout, fileno($engine2->{'read'}), 1) == 1) { my @lines = read_lines($engine2); for my $line (@lines) { + next if $line =~ /(upper|lower)bound/; handle_uci($engine2, $line, 0); } $sleep = 0; - # don't update too often - Time::HiRes::alarm(0.2); + output_screen(); } sleep $sleep; @@ -239,7 +241,7 @@ sub handle_uci { } else { if (defined($move_calculating_second_engine)) { my $move = $refutation_moves{$move_calculating_second_engine}; - $move->{'pv'} = $engine->{'info'}{'pv'}; + $move->{'pv'} = $engine->{'info'}{'pv'} // $engine->{'info'}{'pv1'}; $move->{'score_cp'} = $engine->{'info'}{'score_cp'} // $engine->{'info'}{'score_cp1'} // 0; $move->{'score_mate'} = $engine->{'info'}{'score_mate'} // $engine->{'info'}{'score_mate1'}; $move->{'toplay'} = $pos_calculating->{'toplay'}; @@ -619,9 +621,17 @@ sub prettyprint_pv { sub output_screen { #return; - + return if (!defined($pos_calculating)); + # Don't update too often. + my $age = Time::HiRes::tv_interval($latest_update); + if ($age < $update_max_interval) { + Time::HiRes::alarm($update_max_interval + 0.01 - $age); + return; + } + $latest_update = [Time::HiRes::gettimeofday]; + my $info = $engine->{'info'}; my $id = $engine->{'id'};