diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-07 18:21:31 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-09-07 18:21:31 +1000 |
| commit | ad2b389e2331d6072da1e5919279e7f0f190555e (patch) | |
| tree | 12ffb1add1559708421b5f64f0a00cae97e9fc00 /plugin/src/Caelestia/audioprovider.cpp | |
| parent | plugin: add cava provider (diff) | |
| download | caelestia-shell-ad2b389e2331d6072da1e5919279e7f0f190555e.tar.gz caelestia-shell-ad2b389e2331d6072da1e5919279e7f0f190555e.tar.bz2 caelestia-shell-ad2b389e2331d6072da1e5919279e7f0f190555e.zip | |
plugin/ap: cleaner chunk loading/accessing
Diffstat (limited to 'plugin/src/Caelestia/audioprovider.cpp')
| -rw-r--r-- | plugin/src/Caelestia/audioprovider.cpp | 32 |
1 files changed, 9 insertions, 23 deletions
diff --git a/plugin/src/Caelestia/audioprovider.cpp b/plugin/src/Caelestia/audioprovider.cpp index 0219ca2..3424e22 100644 --- a/plugin/src/Caelestia/audioprovider.cpp +++ b/plugin/src/Caelestia/audioprovider.cpp @@ -73,10 +73,7 @@ void AudioCollector::loadChunk() { i += toCopy; if (m_chunkOffset == m_chunkSize) { - m_provider->withLock([&] { - m_provider->loadChunk(m_chunk); - }); - + m_provider->loadChunk(m_chunk); m_chunkOffset = 0; } } @@ -134,14 +131,7 @@ void AudioProcessor::stop() { } void AudioProcessor::handleTimeout() { - QVector<double> chunk; - - m_provider->withLock([&] { - if (m_provider->hasChunks()) { - chunk = m_provider->nextChunk(); - } - }); - + const QVector<double> chunk = m_provider->nextChunk(); if (!chunk.isEmpty()) { processChunk(chunk); } @@ -181,21 +171,17 @@ int AudioProvider::chunkSize() const { return m_chunkSize; } -void AudioProvider::withLock(std::function<void()> fn) { - QMutexLocker locker(&m_mutex); - fn(); -} - -bool AudioProvider::hasChunks() const { - return !m_chunks.isEmpty(); -} - QVector<double> AudioProvider::nextChunk() { + QMutexLocker lock(&m_mutex); + if (m_chunks.isEmpty()) { + return {}; + } return m_chunks.dequeue(); } -void AudioProvider::loadChunk(QVector<double> chunk) { - m_chunks.enqueue(std::move(chunk)); +void AudioProvider::loadChunk(const QVector<double>& chunk) { + QMutexLocker lock(&m_mutex); + m_chunks.enqueue(chunk); } void AudioProvider::init() { |