Skip to content

Commit 42729f8

Browse files
committed
prevent unnecessary redrawing of the time label
1 parent 1b665bf commit 42729f8

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/displayapp/screens/StopWatch.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace {
1515
const int secs = (timeElapsedSecs) % 60;
1616
const int mins = (timeElapsedSecs / 60) % 60;
1717
const int hours = (timeElapsedSecs / 60) / 60;
18-
return TimeSeparated {hours, mins, secs, hundredths};
18+
return TimeSeparated {hours, mins, secs, hundredths, timeElapsedSecs};
1919
}
2020

2121
void PlayPauseEventHandler(lv_obj_t* obj, lv_event_t event) {
@@ -145,11 +145,14 @@ void StopWatch::DisplayCleared() {
145145

146146
void StopWatch::RenderTime() {
147147
TimeSeparated elapsedTime = ConvertTicksToTimeSegments(stopWatchController.GetElapsedTime());
148-
SetHoursVisible(elapsedTime.hours != 0);
149-
if (!hoursVisible) {
150-
lv_label_set_text_fmt(time, "%02d:%02d", elapsedTime.mins, elapsedTime.secs);
151-
} else {
152-
lv_label_set_text_fmt(time, "%02d:%02d:%02d", elapsedTime.hours, elapsedTime.mins, elapsedTime.secs);
148+
renderedSeconds = elapsedTime.epochSecs;
149+
if (renderedSeconds.IsUpdated()) {
150+
SetHoursVisible(elapsedTime.hours != 0);
151+
if (!hoursVisible) {
152+
lv_label_set_text_fmt(time, "%02d:%02d", elapsedTime.mins, elapsedTime.secs);
153+
} else {
154+
lv_label_set_text_fmt(time, "%02d:%02d:%02d", elapsedTime.hours, elapsedTime.mins, elapsedTime.secs);
155+
}
153156
}
154157
lv_label_set_text_fmt(msecTime, "%02d", elapsedTime.hundredths);
155158
}

src/displayapp/screens/StopWatch.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "systemtask/SystemTask.h"
88
#include "systemtask/WakeLock.h"
99
#include "Symbols.h"
10+
#include "utility/DirtyValue.h"
1011

1112
namespace Pinetime::Applications {
1213
namespace Screens {
@@ -16,6 +17,7 @@ namespace Pinetime::Applications {
1617
int mins;
1718
int secs;
1819
int hundredths;
20+
int epochSecs;
1921
};
2022

2123
class StopWatch : public Screen {
@@ -47,6 +49,7 @@ namespace Pinetime::Applications {
4749
int displayedLaps = 3;
4850
lv_obj_t *time, *msecTime, *btnPlayPause, *btnStopLap, *txtPlayPause, *txtStopLap;
4951
lv_obj_t* lapText;
52+
Utility::DirtyValue<TickType_t> renderedSeconds;
5053
bool hoursVisible = false;
5154

5255
lv_task_t* taskRefresh;

0 commit comments

Comments
 (0)