summaryrefslogtreecommitdiff
path: root/src/audio/track_queue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/track_queue.cpp')
-rw-r--r--src/audio/track_queue.cpp56
1 files changed, 37 insertions, 19 deletions
diff --git a/src/audio/track_queue.cpp b/src/audio/track_queue.cpp
index 721329f9..6f17ad33 100644
--- a/src/audio/track_queue.cpp
+++ b/src/audio/track_queue.cpp
@@ -81,45 +81,57 @@ auto TrackQueue::GetUpcoming(std::size_t limit) const
auto TrackQueue::AddNext(database::TrackId t) -> void {
const std::lock_guard<std::mutex> lock(mutex_);
enqueued_.push_front(t);
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = enqueued_.size() < 2});
+
+ QueueUpdate ev{.current_changed = enqueued_.size() < 2};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::AddNext(std::shared_ptr<playlist::ISource> src) -> void {
const std::lock_guard<std::mutex> lock(mutex_);
enqueued_.push_front(src);
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = enqueued_.size() < 2});
+
+ QueueUpdate ev{.current_changed = enqueued_.size() < 2};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::IncludeNext(std::shared_ptr<playlist::IResetableSource> src)
-> void {
const std::lock_guard<std::mutex> lock(mutex_);
enqueued_.push_front(src);
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = enqueued_.size() < 2});
+
+ QueueUpdate ev{.current_changed = enqueued_.size() < 2};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::AddLast(database::TrackId t) -> void {
const std::lock_guard<std::mutex> lock(mutex_);
enqueued_.push_back(t);
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = enqueued_.size() < 2});
+
+ QueueUpdate ev{.current_changed = enqueued_.size() < 2};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::AddLast(std::shared_ptr<playlist::ISource> src) -> void {
const std::lock_guard<std::mutex> lock(mutex_);
enqueued_.push_back(src);
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = enqueued_.size() < 2});
+
+ QueueUpdate ev{.current_changed = enqueued_.size() < 2};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::IncludeLast(std::shared_ptr<playlist::IResetableSource> src)
-> void {
const std::lock_guard<std::mutex> lock(mutex_);
enqueued_.push_back(src);
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = enqueued_.size() < 2});
+
+ QueueUpdate ev{.current_changed = enqueued_.size() < 2};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::Next() -> void {
@@ -149,8 +161,9 @@ auto TrackQueue::Next() -> void {
}
}
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = true});
+ QueueUpdate ev{.current_changed = true};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::Previous() -> void {
@@ -161,7 +174,9 @@ auto TrackQueue::Previous() -> void {
auto src = std::get<std::shared_ptr<playlist::IResetableSource>>(
enqueued_.front());
if (src->Previous()) {
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>({});
+ QueueUpdate ev{.current_changed = false};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
return;
}
}
@@ -180,16 +195,19 @@ auto TrackQueue::Previous() -> void {
}
played_.pop_front();
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = true});
+ QueueUpdate ev{.current_changed = true};
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
auto TrackQueue::Clear() -> void {
const std::lock_guard<std::mutex> lock(mutex_);
+ QueueUpdate ev{.current_changed = !enqueued_.empty()};
played_.clear();
enqueued_.clear();
- events::Dispatch<QueueUpdate, AudioState, ui::UiState>(
- QueueUpdate{.current_changed = true});
+
+ events::Audio().Dispatch(ev);
+ events::Ui().Dispatch(ev);
}
} // namespace audio