From 5206d3783645ad4caf189ab77ce82f360d1e45bc Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Thu, 14 Apr 2016 10:45:21 +0200 Subject: [PATCH] winrt: Use ComPtr for better ref count tracking Just forwarding the content of a ComPtr is potentially dangerous. Change-Id: I4f3dfa04a5844d299a5653e31a4a0d1e1b86f9b5 Reviewed-by: Oliver Wolff --- src/plugins/winrt/qwinrtcameracontrol.cpp | 4 ++-- src/plugins/winrt/qwinrtcameracontrol.h | 4 +++- src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/winrt/qwinrtcameracontrol.cpp b/src/plugins/winrt/qwinrtcameracontrol.cpp index 19b718cd..b0446cd5 100644 --- a/src/plugins/winrt/qwinrtcameracontrol.cpp +++ b/src/plugins/winrt/qwinrtcameracontrol.cpp @@ -775,10 +775,10 @@ QCameraLocksControl *QWinRTCameraControl::cameraLocksControl() const return d->cameraLocksControl; } -IMediaCapture *QWinRTCameraControl::handle() const +Microsoft::WRL::ComPtr QWinRTCameraControl::handle() const { Q_D(const QWinRTCameraControl); - return d->capture.Get(); + return d->capture; } void QWinRTCameraControl::onBufferRequested() diff --git a/src/plugins/winrt/qwinrtcameracontrol.h b/src/plugins/winrt/qwinrtcameracontrol.h index b3c86adf..1c0cbd80 100644 --- a/src/plugins/winrt/qwinrtcameracontrol.h +++ b/src/plugins/winrt/qwinrtcameracontrol.h @@ -40,6 +40,8 @@ #include #include +#include + namespace ABI { namespace Windows { namespace Media { @@ -90,7 +92,7 @@ public: QCameraFocusControl *cameraFocusControl() const; QCameraLocksControl *cameraLocksControl() const; - ABI::Windows::Media::Capture::IMediaCapture *handle() const; + Microsoft::WRL::ComPtr handle() const; bool setFocus(QCameraFocus::FocusModes mode); bool setFocusPoint(const QPointF &point); diff --git a/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp b/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp index ae67e33f..67f12f26 100644 --- a/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp +++ b/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp @@ -147,7 +147,7 @@ int QWinRTCameraImageCaptureControl::capture(const QString &fileName) Q_D(QWinRTCameraImageCaptureControl); ++d->currentCaptureId; - IMediaCapture *capture = d->cameraControl->handle(); + ComPtr capture = d->cameraControl->handle(); if (!capture) { emit error(d->currentCaptureId, QCameraImageCapture::NotReadyError, tr("Camera not ready")); return -1;