diff options
author | Maurice Kalinowski <maurice.kalinowski@theqtcompany.com> | 2016-04-14 10:45:21 +0200 |
---|---|---|
committer | Maurice Kalinowski <maurice.kalinowski@qt.io> | 2016-04-22 11:44:37 +0000 |
commit | 5206d3783645ad4caf189ab77ce82f360d1e45bc (patch) | |
tree | c40fba29ce29795bf942f3a7b787d22e9e533b69 | |
parent | f97e1988a6f76d46d551678666a96fa5f36a92f7 (diff) | |
download | qtmultimedia-5206d3783645ad4caf189ab77ce82f360d1e45bc.tar.gz |
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 <oliver.wolff@qt.io>
-rw-r--r-- | src/plugins/winrt/qwinrtcameracontrol.cpp | 4 | ||||
-rw-r--r-- | src/plugins/winrt/qwinrtcameracontrol.h | 4 | ||||
-rw-r--r-- | 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 19b718cdd..b0446cd57 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<ABI::Windows::Media::Capture::IMediaCapture> 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 b3c86adf9..1c0cbd808 100644 --- a/src/plugins/winrt/qwinrtcameracontrol.h +++ b/src/plugins/winrt/qwinrtcameracontrol.h @@ -40,6 +40,8 @@ #include <QtMultimedia/QCameraControl> #include <QtCore/qt_windows.h> +#include <wrl.h> + 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<ABI::Windows::Media::Capture::IMediaCapture> 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 ae67e33f4..67f12f264 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<IMediaCapture> capture = d->cameraControl->handle(); if (!capture) { emit error(d->currentCaptureId, QCameraImageCapture::NotReadyError, tr("Camera not ready")); return -1; |