From ec9e61b284e06fa90db188909bb94c62474b2627 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sat, 20 Oct 2018 13:52:30 +0200 Subject: [PATCH] Only slew clock if more than two seconds off. --- client/mainwindow.cpp | 11 ++++++----- score.js | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/client/mainwindow.cpp b/client/mainwindow.cpp index 7de922c..032591e 100644 --- a/client/mainwindow.cpp +++ b/client/mainwindow.cpp @@ -441,13 +441,14 @@ void MainWindow::bt6000_message_received(const string &msg) int minutes = parse_clock(msg[5], msg[6]); int seconds = parse_clock(msg[7], msg[8]); + map param; + param["clock_min"] = to_string(minutes); + param["clock_sec"] = to_string(seconds); + ws->send_command("update " + serialize_as_json(param)); + ws->send_command("eval adjustclockfromstate()"); + if (clock_running) { ws->send_command("eval startclock()"); - map param; - param["clock_min"] = to_string(minutes); - param["clock_sec"] = to_string(seconds); - ws->send_command("update " + serialize_as_json(param)); - ws->send_command("eval setclockfromstate()"); } else { ws->send_command("eval stopclock()"); } diff --git a/score.js b/score.js index 133a7d8..67099a8 100644 --- a/score.js +++ b/score.js @@ -63,6 +63,15 @@ function setclockfromstate() setclock(amount); } +function adjustclockfromstate() +{ + let amount = parseInt(state['clock_min']) * 60 + parseInt(state['clock_sec']); + let elapsed = time_elapsed_raw(); + if (Math.abs(amount - elapsed) >= 2.0) { + setclock(amount); + } +} + function setclocklimitfromstate() { let amount = parseInt(state['clock_limit_min']) * 60 + parseInt(state['clock_limit_sec']); @@ -145,7 +154,7 @@ function hidelowerthird() lowerthird_visible = false; } -function time_elapsed() +function time_elapsed_raw() { let elapsed = (Date.now() - clock_origin) * 1e-3; if (clock_elapsed + elapsed >= clock_limit) { @@ -154,7 +163,12 @@ function time_elapsed() clock_running = false; return clock_limit; } - return Math.floor(clock_elapsed + elapsed); + return clock_elapsed + elapsed; +} + +function time_elapsed() +{ + return Math.floor(time_elapsed_raw()); } function update_clock() -- 2.39.2