diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-12-05 11:36:34 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-12-05 11:36:34 +1100 |
| commit | 4f5422e906b1d17720592d97bc0d5e82a71b1e5f (patch) | |
| tree | 4e8116510d57fb54c30fc18f1fe591a9aff4e3a0 /src/ui | |
| parent | 67f2f2de8393951d2eabac26f9afab2dc9388713 (diff) | |
| download | tangara-fw-4f5422e906b1d17720592d97bc0d5e82a71b1e5f.tar.gz | |
Rewrite the track queue to work directly with database iterators
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/ui_fsm.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp index 539cbc9b..3c57f573 100644 --- a/src/ui/ui_fsm.cpp +++ b/src/ui/ui_fsm.cpp @@ -118,9 +118,7 @@ void UiState::react(const audio::PlaybackUpdate& ev) {} void UiState::react(const audio::QueueUpdate&) { auto& queue = sServices->track_queue(); - bool had_queue = sPlaybackModel.current_track.get().has_value(); - sPlaybackModel.current_track.set(queue.GetCurrent()); - sPlaybackModel.upcoming_tracks.set(queue.GetUpcoming(10)); + sPlaybackModel.current_track.set(queue.Current()); } void UiState::react(const internal::ControlSchemeChanged&) { @@ -283,9 +281,15 @@ void Lua::react(const system_fsm::BatteryStateChanged& ev) { } void Lua::react(const audio::QueueUpdate&) { - auto& queue = sServices->track_queue(); - queue_size_->Update(static_cast<int>(queue.Size())); - queue_position_->Update(static_cast<int>(queue.Position())); + sServices->bg_worker().Dispatch<void>([=]() { + auto& queue = sServices->track_queue(); + size_t total_size = queue.GetTotalSize(); + size_t current_pos = queue.GetCurrentPosition(); + events::Ui().RunOnTask([=]() { + queue_size_->Update(static_cast<int>(total_size)); + queue_position_->Update(static_cast<int>(current_pos)); + }); + }); } void Lua::react(const audio::PlaybackStarted& ev) { |
