summaryrefslogtreecommitdiff
path: root/src/displayapp
diff options
context:
space:
mode:
authorJF <JF002@users.noreply.github.com>2021-11-06 10:45:17 +0100
committerGitHub <noreply@github.com>2021-11-06 10:45:17 +0100
commitcfc11ea83b5b864810a87387f68f53c017bc20db (patch)
treeadd4cc8a74075e78f2b1a3e9f0489cc7c91c4362 /src/displayapp
parent0aa73c2279f81a3cc2c730d253807b6102033195 (diff)
parent30520d262b8bae9868645462e196027389dce246 (diff)
Merge pull request #792 from Riksu9000/memory_saving
Memory savings by replacing strings
Diffstat (limited to 'src/displayapp')
-rw-r--r--src/displayapp/screens/SystemInfo.cpp26
-rw-r--r--src/displayapp/screens/Twos.cpp12
2 files changed, 21 insertions, 17 deletions
diff --git a/src/displayapp/screens/SystemInfo.cpp b/src/displayapp/screens/SystemInfo.cpp
index 343b72bf..dd223b2f 100644
--- a/src/displayapp/screens/SystemInfo.cpp
+++ b/src/displayapp/screens/SystemInfo.cpp
@@ -209,7 +209,7 @@ std::unique_ptr<Screen> SystemInfo::CreateScreen4() {
static constexpr uint8_t maxTaskCount = 9;
TaskStatus_t tasksStatus[maxTaskCount];
- lv_obj_t* infoTask = lv_table_create(lv_scr_act(), NULL);
+ lv_obj_t* infoTask = lv_table_create(lv_scr_act(), nullptr);
lv_table_set_col_cnt(infoTask, 4);
lv_table_set_row_cnt(infoTask, maxTaskCount + 1);
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() {
auto nb = uxTaskGetSystemState(tasksStatus, maxTaskCount, nullptr);
std::sort(tasksStatus, tasksStatus + nb, sortById);
for (uint8_t i = 0; i < nb && i < maxTaskCount; i++) {
+ char buffer[7] = {0};
- lv_table_set_cell_value(infoTask, i + 1, 0, std::to_string(tasksStatus[i].xTaskNumber).c_str());
- char state[2] = {0};
+ sprintf(buffer, "%lu", tasksStatus[i].xTaskNumber);
+ lv_table_set_cell_value(infoTask, i + 1, 0, buffer);
switch (tasksStatus[i].eCurrentState) {
case eReady:
case eRunning:
- state[0] = 'R';
+ buffer[0] = 'R';
break;
case eBlocked:
- state[0] = 'B';
+ buffer[0] = 'B';
break;
case eSuspended:
- state[0] = 'S';
+ buffer[0] = 'S';
break;
case eDeleted:
- state[0] = 'D';
+ buffer[0] = 'D';
break;
default:
- state[0] = 'I'; // Invalid
+ buffer[0] = 'I'; // Invalid
break;
}
- lv_table_set_cell_value(infoTask, i + 1, 1, state);
+ buffer[1] = '\0';
+ lv_table_set_cell_value(infoTask, i + 1, 1, buffer);
lv_table_set_cell_value(infoTask, i + 1, 2, tasksStatus[i].pcTaskName);
if (tasksStatus[i].usStackHighWaterMark < 20) {
- std::string str1 = std::to_string(tasksStatus[i].usStackHighWaterMark) + " low";
- lv_table_set_cell_value(infoTask, i + 1, 3, str1.c_str());
+ sprintf(buffer, "%d low", tasksStatus[i].usStackHighWaterMark);
} else {
- lv_table_set_cell_value(infoTask, i + 1, 3, std::to_string(tasksStatus[i].usStackHighWaterMark).c_str());
+ sprintf(buffer, "%d", tasksStatus[i].usStackHighWaterMark);
}
+ lv_table_set_cell_value(infoTask, i + 1, 3, buffer);
}
return std::make_unique<Screens::Label>(3, 5, app, infoTask);
}
diff --git a/src/displayapp/screens/Twos.cpp b/src/displayapp/screens/Twos.cpp
index 4201d501..d12ef906 100644
--- a/src/displayapp/screens/Twos.cpp
+++ b/src/displayapp/screens/Twos.cpp
@@ -1,10 +1,10 @@
#include "Twos.h"
-#include <lvgl/lvgl.h>
-#include <string>
-#include <charconv>
#include <array>
-#include <vector>
+#include <cstdio>
+#include <cstdlib>
+#include <lvgl/lvgl.h>
#include <utility>
+#include <vector>
using namespace Pinetime::Applications::Screens;
@@ -265,7 +265,9 @@ void Twos::updateGridDisplay(Tile grid[][4]) {
for (int row = 0; row < 4; row++) {
for (int col = 0; col < 4; col++) {
if (grid[row][col].value) {
- lv_table_set_cell_value(gridDisplay, row, col, (std::to_string(grid[row][col].value)).c_str());
+ char buffer[7];
+ sprintf(buffer, "%d", grid[row][col].value);
+ lv_table_set_cell_value(gridDisplay, row, col, buffer);
} else {
lv_table_set_cell_value(gridDisplay, row, col, "");
}