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(-) (limited to 'src/plugins/directshow/camera') 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