summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/audioprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/src/Caelestia/audioprovider.cpp')
-rw-r--r--plugin/src/Caelestia/audioprovider.cpp32
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() {