summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2021-09-14 10:20:19 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-09-17 11:39:19 +0000
commite5be82df5d2b1cf546bae3a9bcc75a64275d8411 (patch)
tree1149a0814bb64033972b4404298331d4754204e3
parentca57e062e085f7346812e1a340bb0be49b44d224 (diff)
Fix Recorder QML example crash on playback
Found the crash was related to a delete videooutput, when changing the sink to nullptr Fixes: QTBUG-96282 Change-Id: I3c31f0ddccb588ab5987b81ae3ba5514724a606b Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit c1fdcd241896f3fdf96715b322ac5deb80a13088) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp5
-rw-r--r--src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp22
2 files changed, 14 insertions, 13 deletions
diff --git a/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp b/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
index 11cfd73f3..1e6ffb3dd 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
+++ b/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
@@ -774,10 +774,11 @@ void QAndroidCameraSession::setVideoSink(QVideoSink *sink)
return;
m_sink = sink;
- delete m_textureOutput;
- m_textureOutput = nullptr;
if (m_sink) {
+ delete m_textureOutput;
+ m_textureOutput = nullptr;
+
m_textureOutput = new QAndroidTextureVideoOutput(this);
m_textureOutput->setSurface(m_sink);
}
diff --git a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp
index 49ed8fbec..8ae49715e 100644
--- a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp
+++ b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayer.cpp
@@ -334,23 +334,23 @@ void QAndroidMediaPlayer::setVideoSink(QVideoSink *sink)
m_videoSink = sink;
if (!m_videoSink) {
- if (mVideoOutput) {
- delete mVideoOutput;
- mVideoOutput = nullptr;
- mMediaPlayer->setDisplay(nullptr);
- }
return;
}
- if (!mVideoOutput) {
- mVideoOutput = new QAndroidTextureVideoOutput(this);
- connect(mVideoOutput, &QAndroidTextureVideoOutput::readyChanged, this,
- &QAndroidMediaPlayer::onVideoOutputReady);
- connect(mMediaPlayer, &AndroidMediaPlayer::timedTextChanged, mVideoOutput,
- &QAndroidTextureVideoOutput::setSubtitle);
+ if (mVideoOutput) {
+ delete mVideoOutput;
+ mVideoOutput = nullptr;
+ mMediaPlayer->setDisplay(nullptr);
}
+ mVideoOutput = new QAndroidTextureVideoOutput(this);
+ connect(mVideoOutput, &QAndroidTextureVideoOutput::readyChanged, this,
+ &QAndroidMediaPlayer::onVideoOutputReady);
+ connect(mMediaPlayer, &AndroidMediaPlayer::timedTextChanged, mVideoOutput,
+ &QAndroidTextureVideoOutput::setSubtitle);
+
mVideoOutput->setSurface(sink);
+
if (mVideoOutput->isReady())
mMediaPlayer->setDisplay(mVideoOutput->surfaceTexture());
}