summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorSamuel Mira <samuel.mira@qt.io>2021-09-14 10:20:19 +0300
committerSamuel Mira <samuel.mira@qt.io>2021-09-17 13:17:06 +0300
commitc1fdcd241896f3fdf96715b322ac5deb80a13088 (patch)
treed084f46e7a06d293e21489d158aaa6e6ef98cf68 /src/multimedia
parentf94241cc98e2222c1567bbdef05a3dbd0eb12686 (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 Pick-to: 6.2 6.2.0 Change-Id: I3c31f0ddccb588ab5987b81ae3ba5514724a606b Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/multimedia')
-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 62e12353e..38b819352 100644
--- a/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
+++ b/src/multimedia/platform/android/mediacapture/qandroidcamerasession.cpp
@@ -779,10 +779,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());
}