From 5c8ed3a67384bc22eb1a876ed2fb29063657a675 Mon Sep 17 00:00:00 2001 From: Val Doroshchuk Date: Tue, 5 Feb 2019 11:52:01 +0100 Subject: DirectShow: Fix crash when camera is being destroyed If a camera is going to be destroyed, a service plugin releases media service, (which releases ds camera session) and might call CoUninitialize. This leads to a crash when DirectShowSampleGrabber is destroyed after releasing the camera. Added a fix to release the sample grabber together with camera session. Task-number: QTBUG-73461 Change-Id: I8e518d0242d983c8d2bb00c30ad87c7e8e1e2c93 Reviewed-by: Oliver Wolff --- src/plugins/directshow/camera/dscamerasession.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index d23b7f1e2..5ab9f67d8 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -439,9 +439,6 @@ bool DSCameraSession::unload() setStatus(QCamera::UnloadingStatus); - m_previewSampleGrabber->deleteLater(); - m_previewSampleGrabber = nullptr; - m_needsHorizontalMirroring = false; m_supportedViewfinderSettings.clear(); m_supportedFormats.clear(); @@ -808,7 +805,7 @@ bool DSCameraSession::createFilterGraph() // Sample grabber filter if (!m_previewSampleGrabber) { - m_previewSampleGrabber = new DirectShowSampleGrabber; + m_previewSampleGrabber = new DirectShowSampleGrabber(this); connect(m_previewSampleGrabber, &DirectShowSampleGrabber::bufferAvailable, this, &DSCameraSession::onFrameAvailable, Qt::DirectConnection); } -- cgit v1.2.3 From 86172a759d40b0dc6dc664ba79581bf315526788 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Tue, 5 Feb 2019 20:51:21 +0100 Subject: gpu_vivante depends on opengles2 and gui MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I8317956994f586fa2272d5633af91325d277998b Reviewed-by: Tony Sarajärvi --- src/multimedia/configure.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multimedia/configure.json b/src/multimedia/configure.json index 9980b0664..025ff7d66 100644 --- a/src/multimedia/configure.json +++ b/src/multimedia/configure.json @@ -235,7 +235,7 @@ }, "gpu_vivante": { "label": "Vivante GPU", - "condition": "features.opengles2 && tests.gpu_vivante", + "condition": "features.gui && features.opengles2 && tests.gpu_vivante", "output": [ "privateFeature" ] }, "resourcepolicy": { -- cgit v1.2.3 From d6c69017130405d945df7f9bd8b529932b158806 Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Fri, 9 Nov 2018 15:36:11 +0100 Subject: Fix crash in player example when close the window while playing When it is playing and close the window: 1. The player object will be destroyed first (all QString's). 2. Next parent QWidget will be destroyed with all children. 3. While destroying QMediaPlayer from Player object, the playback will be stopped. 4. The status will be changed and Player::statusChanged will be called. The connection still exists. And since all string members are already freed, it produces a crash. Change-Id: I2c2fdca97f0ff4b300527b550ecc0c12b04e5b4e Reviewed-by: Oliver Wolff --- src/multimedia/playback/qmediaplayer.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index 19d4ec42c..e90035cce 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -648,6 +648,9 @@ QMediaPlayer::~QMediaPlayer() Q_D(QMediaPlayer); d->disconnectPlaylist(); + // Disconnect everything to prevent notifying + // when a receiver is already destroyed. + disconnect(); if (d->service) { if (d->control) -- cgit v1.2.3 From a8ebc9c9fd746bd6c269fa61145d53faafecdbd5 Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Fri, 8 Feb 2019 12:13:40 +0100 Subject: Do not ignore tst_*.qml Change-Id: I55c045909dd0eeac86160ca989ce893ed2816483 Reviewed-by: Andy Shaw --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c2aef443e..95aed651e 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,7 @@ src/multimediawidgets/qtmultimediawidgetsversion.h # tst_* !tst_*.cpp +!tst_*.qml tests/auto/cmake/build # Generated static plugin import sources -- cgit v1.2.3