summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/audio/qsoundeffect_pulse_p.cpp12
-rw-r--r--src/multimedia/audio/qsoundeffect_pulse_p.h2
2 files changed, 10 insertions, 4 deletions
diff --git a/src/multimedia/audio/qsoundeffect_pulse_p.cpp b/src/multimedia/audio/qsoundeffect_pulse_p.cpp
index 3b9278c7d..8cc49004a 100644
--- a/src/multimedia/audio/qsoundeffect_pulse_p.cpp
+++ b/src/multimedia/audio/qsoundeffect_pulse_p.cpp
@@ -628,11 +628,17 @@ void QSoundEffectPrivate::emptyStream()
pa_operation_unref(pa_stream_flush(m_pulseStream, stream_flush_callback, m_ref->getRef()));
}
-void QSoundEffectPrivate::emptyComplete()
+void QSoundEffectPrivate::emptyComplete(void *stream)
{
PulseDaemonLocker locker;
+#ifdef QT_PA_DEBUG
+ qDebug() << this << "emptyComplete";
+#endif
+
m_emptying = false;
- pa_operation_unref(pa_stream_cork(m_pulseStream, 1, stream_cork_callback, m_ref->getRef()));
+
+ if ((pa_stream *)stream == m_pulseStream)
+ pa_operation_unref(pa_stream_cork(m_pulseStream, 1, stream_cork_callback, m_ref->getRef()));
}
void QSoundEffectPrivate::sampleReady()
@@ -1122,7 +1128,7 @@ void QSoundEffectPrivate::stream_flush_callback(pa_stream *s, int success, void
#ifdef QT_PA_DEBUG
qDebug() << self << "stream_flush_callback";
#endif
- QMetaObject::invokeMethod(self, "emptyComplete", Qt::QueuedConnection);
+ QMetaObject::invokeMethod(self, "emptyComplete", Qt::QueuedConnection, Q_ARG(void*, s));
}
void QSoundEffectPrivate::stream_write_done_callback(void *p)
diff --git a/src/multimedia/audio/qsoundeffect_pulse_p.h b/src/multimedia/audio/qsoundeffect_pulse_p.h
index 6c7202c24..1d5aa9305 100644
--- a/src/multimedia/audio/qsoundeffect_pulse_p.h
+++ b/src/multimedia/audio/qsoundeffect_pulse_p.h
@@ -118,7 +118,7 @@ private Q_SLOTS:
void underRun();
void prepare();
void streamReady();
- void emptyComplete();
+ void emptyComplete(void *stream);
void updateVolume();
void updateMuted();