diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-03-18 11:54:43 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-03-18 11:54:44 +0100 |
commit | 8ef57db9729b714239ad507488e1c8a011a5163a (patch) | |
tree | b3a9ff7629762707c05221b34f9372437604608f /src/multimedia | |
parent | 69837e6e04ae125186a8deaac59d82607fcd6d1a (diff) | |
parent | cd6a109f6068ea74270cb47736b3e2259e4ace84 (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: Ia1bc95c071d29653a85e753964d15826ce3706f8
Diffstat (limited to 'src/multimedia')
-rw-r--r-- | src/multimedia/audio/qsoundeffect_pulse_p.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/multimedia/audio/qsoundeffect_pulse_p.cpp b/src/multimedia/audio/qsoundeffect_pulse_p.cpp index 0855c1f67..51cdde026 100644 --- a/src/multimedia/audio/qsoundeffect_pulse_p.cpp +++ b/src/multimedia/audio/qsoundeffect_pulse_p.cpp @@ -528,6 +528,21 @@ qreal QSoundEffectPrivate::volume() const return m_volume; } +static void volume_stream_flush_callback(pa_stream *s, int success, void *userdata) +{ + Q_UNUSED(s); + QSoundEffectRef *ref = reinterpret_cast<QSoundEffectRef *>(userdata); + QSoundEffectPrivate *self = ref->soundEffect(); + ref->release(); + if (!self) + return; + + if (!success) + qWarning("QSoundEffect(pulseaudio): failed to drain"); + + QMetaObject::invokeMethod(self, "prepare", Qt::QueuedConnection); +} + void QSoundEffectPrivate::setVolume(qreal volume) { QMutexLocker locker(&m_volumeLock); @@ -537,6 +552,8 @@ void QSoundEffectPrivate::setVolume(qreal volume) m_volume = qBound(qreal(0), volume, qreal(1)); locker.unlock(); + if (!m_playing && m_pulseStream) + pa_stream_flush(m_pulseStream, volume_stream_flush_callback, m_ref->getRef()); emit volumeChanged(); } |