summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-03-18 11:54:43 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-03-18 11:54:44 +0100
commit8ef57db9729b714239ad507488e1c8a011a5163a (patch)
treeb3a9ff7629762707c05221b34f9372437604608f
parent69837e6e04ae125186a8deaac59d82607fcd6d1a (diff)
parentcd6a109f6068ea74270cb47736b3e2259e4ace84 (diff)
Merge remote-tracking branch 'origin/5.14' into 5.15
-rw-r--r--src/multimedia/audio/qsoundeffect_pulse_p.cpp17
-rw-r--r--src/plugins/directshow/player/directshowioreader.cpp2
-rw-r--r--tests/auto/integration/qmediaplayerbackend/qmediaplayerbackend.pro2
-rw-r--r--tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp4
4 files changed, 18 insertions, 7 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();
}
diff --git a/src/plugins/directshow/player/directshowioreader.cpp b/src/plugins/directshow/player/directshowioreader.cpp
index ced10ea10..3318d57b5 100644
--- a/src/plugins/directshow/player/directshowioreader.cpp
+++ b/src/plugins/directshow/player/directshowioreader.cpp
@@ -155,7 +155,7 @@ HRESULT DirectShowIOReader::Request(IMediaSample *pSample, DWORD_PTR dwUser)
return VFW_E_SAMPLE_TIME_NOT_SET;
}
LONGLONG position = startTime / 10000000;
- LONG length = (endTime - startTime) / 10000000;
+ LONG length = qMin<qint64>((endTime - startTime) / 10000000, m_availableLength);
auto request = new DirectShowSampleRequest(pSample, dwUser, position, length, buffer);
diff --git a/tests/auto/integration/qmediaplayerbackend/qmediaplayerbackend.pro b/tests/auto/integration/qmediaplayerbackend/qmediaplayerbackend.pro
index b9417f7c2..6dd1e8d62 100644
--- a/tests/auto/integration/qmediaplayerbackend/qmediaplayerbackend.pro
+++ b/tests/auto/integration/qmediaplayerbackend/qmediaplayerbackend.pro
@@ -15,8 +15,6 @@ HEADERS += \
TESTDATA += testdata/*
boot2qt: {
- # Yocto sysroot does not have gstreamer/wav
- QMAKE_CXXFLAGS += -DWAV_SUPPORT_NOT_FORCED
# OGV testing is unstable with qemu
QMAKE_CXXFLAGS += -DSKIP_OGV_TEST
}
diff --git a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
index a2217afc8..ec520e901 100644
--- a/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
+++ b/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend.cpp
@@ -179,11 +179,7 @@ QMediaContent tst_QMediaPlayerBackend::selectVideoFile(const QStringList& mediaC
bool tst_QMediaPlayerBackend::isWavSupported()
{
-#ifdef WAV_SUPPORT_NOT_FORCED
return !localWavFile.isNull();
-#else
- return true;
-#endif
}
void tst_QMediaPlayerBackend::initTestCase()