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;
|
||||
}
|
||||
|
||||
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()
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user