From 8a5c637eb7210aa6a69f90567c55ee2b1afd5706 Mon Sep 17 00:00:00 2001 From: codingjourney Date: Thu, 12 Dec 2024 08:20:57 +0100 Subject: prevent unnecessary redrawing of the time label --- src/displayapp/screens/StopWatch.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src/displayapp/screens/StopWatch.cpp') 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); } -- cgit v1.2.3-70-g09d2