diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-09-05 09:51:10 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-09-05 09:51:10 +1000 |
| commit | 0032896251d8ddc6c2775495445da8fceffba98e (patch) | |
| tree | 5a7f981a832977c153bc9a292305b61605b8eb66 /src/ui/lvgl_task.cpp | |
| parent | 382d82a14b1427f18a05eae7fb7763d4fa5bc319 (diff) | |
| download | tangara-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.cpp | 26 |
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; } |
