diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-07-26 11:23:36 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-07-26 11:23:36 +1000 |
| commit | f94be3db2f2bb6c1b359744cb915683095e4ee80 (patch) | |
| tree | 79d335db661720947c518a535bdde733fe669032 /src/audio | |
| parent | d8194135bbaad97d1f3428a74c7fc54ba3f604ec (diff) | |
| download | tangara-fw-f94be3db2f2bb6c1b359744cb915683095e4ee80.tar.gz | |
make event queue go faster
Diffstat (limited to 'src/audio')
| -rw-r--r-- | src/audio/audio_fsm.cpp | 4 | ||||
| -rw-r--r-- | src/audio/audio_task.cpp | 8 | ||||
| -rw-r--r-- | src/audio/fatfs_audio_input.cpp | 4 | ||||
| -rw-r--r-- | src/audio/track_queue.cpp | 56 |
4 files changed, 44 insertions, 28 deletions
diff --git a/src/audio/audio_fsm.cpp b/src/audio/audio_fsm.cpp index c3313820..c8d64bdd 100644 --- a/src/audio/audio_fsm.cpp +++ b/src/audio/audio_fsm.cpp @@ -67,14 +67,14 @@ void AudioState::react(const system_fsm::StorageMounted& ev) { void AudioState::react(const system_fsm::KeyUpChanged& ev) { if (ev.falling && sI2SOutput->AdjustVolumeUp()) { ESP_LOGI(kTag, "volume up!"); - events::Dispatch<VolumeChanged, ui::UiState>({}); + events::Ui().Dispatch(VolumeChanged{}); } } void AudioState::react(const system_fsm::KeyDownChanged& ev) { if (ev.falling && sI2SOutput->AdjustVolumeDown()) { ESP_LOGI(kTag, "volume down!"); - events::Dispatch<VolumeChanged, ui::UiState>({}); + events::Ui().Dispatch(VolumeChanged{}); } } diff --git a/src/audio/audio_task.cpp b/src/audio/audio_task.cpp index 7d117cb4..ae4964a6 100644 --- a/src/audio/audio_task.cpp +++ b/src/audio/audio_task.cpp @@ -84,13 +84,11 @@ auto Timer::AddBytes(std::size_t bytes) -> void { } if (incremented) { - ESP_LOGI("timer", "new time %lu", current_seconds_); - /* - events::Dispatch<PlaybackUpdate, AudioState, ui::UiState>(PlaybackUpdate{ + // ESP_LOGI("timer", "new time %lu", current_seconds_); + events::Audio().Dispatch(PlaybackUpdate{ .seconds_elapsed = current_seconds_, .seconds_total = 0, - }); - */ + }); } } diff --git a/src/audio/fatfs_audio_input.cpp b/src/audio/fatfs_audio_input.cpp index 6a320a5a..811c2702 100644 --- a/src/audio/fatfs_audio_input.cpp +++ b/src/audio/fatfs_audio_input.cpp @@ -135,7 +135,7 @@ auto FileStreamer::CloseFile() -> void { ESP_LOGI(kTag, "closing file"); f_close(file_.get()); file_ = {}; - events::Dispatch<internal::InputFileClosed, AudioState>({}); + events::Audio().Dispatch(internal::InputFileClosed{}); } FatfsAudioInput::FatfsAudioInput( @@ -296,7 +296,7 @@ auto FatfsAudioInput::OpenFile(const std::string& path) -> void { streamer_->Restart(std::move(file)); - events::Dispatch<internal::InputFileOpened, AudioState>({}); + events::Audio().Dispatch(internal::InputFileOpened{}); } auto FatfsAudioInput::CloseCurrentFile() -> void { 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 |
