Skip to content

Commit cfc11ea

Browse files
authored
Merge pull request #792 from Riksu9000/memory_saving
Memory savings by replacing strings
2 parents 0aa73c2 + 30520d2 commit cfc11ea

2 files changed

Lines changed: 21 additions & 17 deletions

File tree

src/displayapp/screens/SystemInfo.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen4() {
209209
static constexpr uint8_t maxTaskCount = 9;
210210
TaskStatus_t tasksStatus[maxTaskCount];
211211

212-
lv_obj_t* infoTask = lv_table_create(lv_scr_act(), NULL);
212+
lv_obj_t* infoTask = lv_table_create(lv_scr_act(), nullptr);
213213
lv_table_set_col_cnt(infoTask, 4);
214214
lv_table_set_row_cnt(infoTask, maxTaskCount + 1);
215215
lv_obj_set_style_local_pad_all(infoTask, LV_TABLE_PART_CELL1, LV_STATE_DEFAULT, 0);
@@ -227,35 +227,37 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen4() {
227227
auto nb = uxTaskGetSystemState(tasksStatus, maxTaskCount, nullptr);
228228
std::sort(tasksStatus, tasksStatus + nb, sortById);
229229
for (uint8_t i = 0; i < nb && i < maxTaskCount; i++) {
230+
char buffer[7] = {0};
230231

231-
lv_table_set_cell_value(infoTask, i + 1, 0, std::to_string(tasksStatus[i].xTaskNumber).c_str());
232-
char state[2] = {0};
232+
sprintf(buffer, "%lu", tasksStatus[i].xTaskNumber);
233+
lv_table_set_cell_value(infoTask, i + 1, 0, buffer);
233234
switch (tasksStatus[i].eCurrentState) {
234235
case eReady:
235236
case eRunning:
236-
state[0] = 'R';
237+
buffer[0] = 'R';
237238
break;
238239
case eBlocked:
239-
state[0] = 'B';
240+
buffer[0] = 'B';
240241
break;
241242
case eSuspended:
242-
state[0] = 'S';
243+
buffer[0] = 'S';
243244
break;
244245
case eDeleted:
245-
state[0] = 'D';
246+
buffer[0] = 'D';
246247
break;
247248
default:
248-
state[0] = 'I'; // Invalid
249+
buffer[0] = 'I'; // Invalid
249250
break;
250251
}
251-
lv_table_set_cell_value(infoTask, i + 1, 1, state);
252+
buffer[1] = '\0';
253+
lv_table_set_cell_value(infoTask, i + 1, 1, buffer);
252254
lv_table_set_cell_value(infoTask, i + 1, 2, tasksStatus[i].pcTaskName);
253255
if (tasksStatus[i].usStackHighWaterMark < 20) {
254-
std::string str1 = std::to_string(tasksStatus[i].usStackHighWaterMark) + " low";
255-
lv_table_set_cell_value(infoTask, i + 1, 3, str1.c_str());
256+
sprintf(buffer, "%d low", tasksStatus[i].usStackHighWaterMark);
256257
} else {
257-
lv_table_set_cell_value(infoTask, i + 1, 3, std::to_string(tasksStatus[i].usStackHighWaterMark).c_str());
258+
sprintf(buffer, "%d", tasksStatus[i].usStackHighWaterMark);
258259
}
260+
lv_table_set_cell_value(infoTask, i + 1, 3, buffer);
259261
}
260262
return std::make_unique<Screens::Label>(3, 5, app, infoTask);
261263
}

src/displayapp/screens/Twos.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#include "Twos.h"
2-
#include <lvgl/lvgl.h>
3-
#include <string>
4-
#include <charconv>
52
#include <array>
6-
#include <vector>
3+
#include <cstdio>
4+
#include <cstdlib>
5+
#include <lvgl/lvgl.h>
76
#include <utility>
7+
#include <vector>
88

99
using namespace Pinetime::Applications::Screens;
1010

@@ -265,7 +265,9 @@ void Twos::updateGridDisplay(Tile grid[][4]) {
265265
for (int row = 0; row < 4; row++) {
266266
for (int col = 0; col < 4; col++) {
267267
if (grid[row][col].value) {
268-
lv_table_set_cell_value(gridDisplay, row, col, (std::to_string(grid[row][col].value)).c_str());
268+
char buffer[7];
269+
sprintf(buffer, "%d", grid[row][col].value);
270+
lv_table_set_cell_value(gridDisplay, row, col, buffer);
269271
} else {
270272
lv_table_set_cell_value(gridDisplay, row, col, "");
271273
}

0 commit comments

Comments
 (0)