summaryrefslogtreecommitdiff
path: root/src/ui/lvgl_task.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-09-05 09:51:10 +1000
committerjacqueline <me@jacqueline.id.au>2023-09-05 09:51:10 +1000
commit0032896251d8ddc6c2775495445da8fceffba98e (patch)
tree5a7f981a832977c153bc9a292305b61605b8eb66 /src/ui/lvgl_task.cpp
parent382d82a14b1427f18a05eae7fb7763d4fa5bc319 (diff)
downloadtangara-fw-0032896251d8ddc6c2775495445da8fceffba98e.tar.gz
Move UI task to priority 0 during playback
Also other misc task cleanup
Diffstat (limited to 'src/ui/lvgl_task.cpp')
-rw-r--r--src/ui/lvgl_task.cpp26
1 files changed, 4 insertions, 22 deletions
diff --git a/src/ui/lvgl_task.cpp b/src/ui/lvgl_task.cpp
index a0f14f7d..74f68cf5 100644
--- a/src/ui/lvgl_task.cpp
+++ b/src/ui/lvgl_task.cpp
@@ -49,24 +49,8 @@
namespace ui {
static const char* kTag = "ui_task";
-static const TickType_t kMaxFrameRate = pdMS_TO_TICKS(100);
-static auto next_frame(TimerHandle_t t) {
- SemaphoreHandle_t sem =
- reinterpret_cast<SemaphoreHandle_t>(pvTimerGetTimerID(t));
- xSemaphoreGive(sem);
-}
-
-UiTask::UiTask()
- : quit_(false),
- frame_semaphore_(xSemaphoreCreateBinary()),
- frame_timer_(xTimerCreate("ui_frame",
- kMaxFrameRate,
- pdTRUE,
- frame_semaphore_,
- next_frame)) {
- xTimerStart(frame_timer_, portMAX_DELAY);
-}
+UiTask::UiTask() {}
UiTask::~UiTask() {
assert(false);
@@ -98,10 +82,8 @@ auto UiTask::Main() -> void {
current_screen_->Tick();
}
- lv_task_handler();
-
- // Wait for the signal to loop again.
- xSemaphoreTake(frame_semaphore_, portMAX_DELAY);
+ TickType_t delay = lv_timer_handler();
+ vTaskDelay(pdMS_TO_TICKS(std::clamp<TickType_t>(delay, 0, 100)));
}
}
@@ -114,7 +96,7 @@ auto UiTask::SetInputDevice(std::shared_ptr<TouchWheelEncoder> dev) -> void {
auto UiTask::Start() -> UiTask* {
UiTask* ret = new UiTask();
- tasks::StartPersistent<tasks::Type::kUi>(0, [=]() { ret->Main(); });
+ tasks::StartPersistent<tasks::Type::kUi>([=]() { ret->Main(); });
return ret;
}