diff options
| author | codingjourney <coding@journey.sk> | 2024-12-12 08:20:57 +0100 |
|---|---|---|
| committer | JF <JF002@users.noreply.github.com> | 2025-11-04 21:25:31 +0100 |
| commit | 8a5c637eb7210aa6a69f90567c55ee2b1afd5706 (patch) | |
| tree | e960276a6993559a5aa1ffaa5bb8720be34129da /src/displayapp/screens/StopWatch.cpp | |
| parent | 11436090f77ef2c6c706a6dc847c5709c40da383 (diff) | |
prevent unnecessary redrawing of the time label
Diffstat (limited to 'src/displayapp/screens/StopWatch.cpp')
| -rw-r--r-- | src/displayapp/screens/StopWatch.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/displayapp/screens/StopWatch.cpp b/src/displayapp/screens/StopWatch.cpp index 506a317b..fffedcc3 100644 --- a/src/displayapp/screens/StopWatch.cpp +++ b/src/displayapp/screens/StopWatch.cpp @@ -15,7 +15,7 @@ namespace { const int secs = (timeElapsedSecs) % 60; const int mins = (timeElapsedSecs / 60) % 60; const int hours = (timeElapsedSecs / 60) / 60; - return TimeSeparated {hours, mins, secs, hundredths}; + return TimeSeparated {hours, mins, secs, hundredths, timeElapsedSecs}; } void PlayPauseEventHandler(lv_obj_t* obj, lv_event_t event) { @@ -145,11 +145,14 @@ void StopWatch::DisplayCleared() { void StopWatch::RenderTime() { TimeSeparated elapsedTime = ConvertTicksToTimeSegments(stopWatchController.GetElapsedTime()); - SetHoursVisible(elapsedTime.hours != 0); - if (!hoursVisible) { - lv_label_set_text_fmt(time, "%02d:%02d", elapsedTime.mins, elapsedTime.secs); - } else { - lv_label_set_text_fmt(time, "%02d:%02d:%02d", elapsedTime.hours, elapsedTime.mins, elapsedTime.secs); + renderedSeconds = elapsedTime.epochSecs; + if (renderedSeconds.IsUpdated()) { + SetHoursVisible(elapsedTime.hours != 0); + if (!hoursVisible) { + lv_label_set_text_fmt(time, "%02d:%02d", elapsedTime.mins, elapsedTime.secs); + } else { + lv_label_set_text_fmt(time, "%02d:%02d:%02d", elapsedTime.hours, elapsedTime.mins, elapsedTime.secs); + } } lv_label_set_text_fmt(msecTime, "%02d", elapsedTime.hundredths); } |
