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>
This commit is contained in:
committed by
Maurice Kalinowski
parent
f97e1988a6
commit
5206d37836
@@ -775,10 +775,10 @@ QCameraLocksControl *QWinRTCameraControl::cameraLocksControl() const
|
|||||||
return d->cameraLocksControl;
|
return d->cameraLocksControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
IMediaCapture *QWinRTCameraControl::handle() const
|
Microsoft::WRL::ComPtr<ABI::Windows::Media::Capture::IMediaCapture> QWinRTCameraControl::handle() const
|
||||||
{
|
{
|
||||||
Q_D(const QWinRTCameraControl);
|
Q_D(const QWinRTCameraControl);
|
||||||
return d->capture.Get();
|
return d->capture;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QWinRTCameraControl::onBufferRequested()
|
void QWinRTCameraControl::onBufferRequested()
|
||||||
|
|||||||
@@ -40,6 +40,8 @@
|
|||||||
#include <QtMultimedia/QCameraControl>
|
#include <QtMultimedia/QCameraControl>
|
||||||
#include <QtCore/qt_windows.h>
|
#include <QtCore/qt_windows.h>
|
||||||
|
|
||||||
|
#include <wrl.h>
|
||||||
|
|
||||||
namespace ABI {
|
namespace ABI {
|
||||||
namespace Windows {
|
namespace Windows {
|
||||||
namespace Media {
|
namespace Media {
|
||||||
@@ -90,7 +92,7 @@ public:
|
|||||||
QCameraFocusControl *cameraFocusControl() const;
|
QCameraFocusControl *cameraFocusControl() const;
|
||||||
QCameraLocksControl *cameraLocksControl() 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 setFocus(QCameraFocus::FocusModes mode);
|
||||||
bool setFocusPoint(const QPointF &point);
|
bool setFocusPoint(const QPointF &point);
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ int QWinRTCameraImageCaptureControl::capture(const QString &fileName)
|
|||||||
Q_D(QWinRTCameraImageCaptureControl);
|
Q_D(QWinRTCameraImageCaptureControl);
|
||||||
|
|
||||||
++d->currentCaptureId;
|
++d->currentCaptureId;
|
||||||
IMediaCapture *capture = d->cameraControl->handle();
|
ComPtr<IMediaCapture> capture = d->cameraControl->handle();
|
||||||
if (!capture) {
|
if (!capture) {
|
||||||
emit error(d->currentCaptureId, QCameraImageCapture::NotReadyError, tr("Camera not ready"));
|
emit error(d->currentCaptureId, QCameraImageCapture::NotReadyError, tr("Camera not ready"));
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user