From 4f5422e906b1d17720592d97bc0d5e82a71b1e5f Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 5 Dec 2023 11:36:34 +1100 Subject: Rewrite the track queue to work directly with database iterators --- src/ui/ui_fsm.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'src/ui') 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(queue.Size())); - queue_position_->Update(static_cast(queue.Position())); + sServices->bg_worker().Dispatch([=]() { + 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(total_size)); + queue_position_->Update(static_cast(current_pos)); + }); + }); } void Lua::react(const audio::PlaybackStarted& ev) { -- cgit v1.2.3