From b62171062be100186a71d00610c15a0b07d07c72 Mon Sep 17 00:00:00 2001 From: VaL Doroshchuk Date: Mon, 19 Aug 2019 11:19:06 +0200 Subject: Make QMediaObjectPrivate as QObjectPrivate Since QMediaObject is QObject, and it uses d_ptr, it is sane to move QMediaObjectPrivate to QObjectPrivate and use standard way of using private impl. NOTE : If some users inherit from QMediaObjectPrivate in their code, they probably initialize and delete d_ptr manually which would cause a crash now. But using QMediaObjectPrivate without QMediaObject should be considered as incorrect usage. Task-number: QTBUG-77630 Change-Id: I147e3b3dc67a8c2765b28f752db196b4d7fca224 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/multimedia/camera/qcamerafocus.cpp | 8 ++------ src/multimedia/camera/qcamerafocus.h | 4 +++- src/multimedia/camera/qcameraimageprocessing.cpp | 8 ++------ src/multimedia/camera/qcameraimageprocessing.h | 4 +++- src/multimedia/qmediaobject.cpp | 16 ++++------------ src/multimedia/qmediaobject.h | 4 +++- src/multimedia/qmediaobject_p.h | 7 +++---- 7 files changed, 20 insertions(+), 31 deletions(-) diff --git a/src/multimedia/camera/qcamerafocus.cpp b/src/multimedia/camera/qcamerafocus.cpp index e73a8ea46..775e49b63 100644 --- a/src/multimedia/camera/qcamerafocus.cpp +++ b/src/multimedia/camera/qcamerafocus.cpp @@ -325,8 +325,6 @@ class QCameraFocusPrivate : public QMediaObjectPrivate public: void initControls(); - QCameraFocus *q_ptr; - QCamera *camera; QCameraFocusControl *focusControl; @@ -373,12 +371,11 @@ void QCameraFocusPrivate::initControls() Construct a QCameraFocus for \a camera. */ -QCameraFocus::QCameraFocus(QCamera *camera): - QObject(camera), d_ptr(new QCameraFocusPrivate) +QCameraFocus::QCameraFocus(QCamera *camera) + : QObject(*new QCameraFocusPrivate, camera) { Q_D(QCameraFocus); d->camera = camera; - d->q_ptr = this; d->initControls(); } @@ -389,7 +386,6 @@ QCameraFocus::QCameraFocus(QCamera *camera): QCameraFocus::~QCameraFocus() { - delete d_ptr; } /*! diff --git a/src/multimedia/camera/qcamerafocus.h b/src/multimedia/camera/qcamerafocus.h index 024f504e9..a5d7725e3 100644 --- a/src/multimedia/camera/qcamerafocus.h +++ b/src/multimedia/camera/qcamerafocus.h @@ -162,7 +162,9 @@ private: Q_DISABLE_COPY(QCameraFocus) Q_DECLARE_PRIVATE(QCameraFocus) - QCameraFocusPrivate *d_ptr; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QCameraFocusPrivate *d_ptr_deprecated; +#endif }; Q_DECLARE_OPERATORS_FOR_FLAGS(QCameraFocus::FocusModes) diff --git a/src/multimedia/camera/qcameraimageprocessing.cpp b/src/multimedia/camera/qcameraimageprocessing.cpp index c2cefeae7..0328f4a56 100644 --- a/src/multimedia/camera/qcameraimageprocessing.cpp +++ b/src/multimedia/camera/qcameraimageprocessing.cpp @@ -114,8 +114,6 @@ class QCameraImageProcessingPrivate : public QMediaObjectPrivate public: void initControls(); - QCameraImageProcessing *q_ptr; - QCamera *camera; QCameraImageProcessingControl *imageControl; bool available; @@ -140,12 +138,11 @@ void QCameraImageProcessingPrivate::initControls() Construct a QCameraImageProcessing for \a camera. */ -QCameraImageProcessing::QCameraImageProcessing(QCamera *camera): - QObject(camera), d_ptr(new QCameraImageProcessingPrivate) +QCameraImageProcessing::QCameraImageProcessing(QCamera *camera) + : QObject(*new QCameraImageProcessingPrivate, camera) { Q_D(QCameraImageProcessing); d->camera = camera; - d->q_ptr = this; d->initControls(); } @@ -156,7 +153,6 @@ QCameraImageProcessing::QCameraImageProcessing(QCamera *camera): QCameraImageProcessing::~QCameraImageProcessing() { - delete d_ptr; } diff --git a/src/multimedia/camera/qcameraimageprocessing.h b/src/multimedia/camera/qcameraimageprocessing.h index e4ad00ff8..f76daf85e 100644 --- a/src/multimedia/camera/qcameraimageprocessing.h +++ b/src/multimedia/camera/qcameraimageprocessing.h @@ -126,7 +126,9 @@ private: Q_DISABLE_COPY(QCameraImageProcessing) Q_DECLARE_PRIVATE(QCameraImageProcessing) - QCameraImageProcessingPrivate *d_ptr; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QCameraImageProcessingPrivate *d_ptr_deprecated; +#endif }; QT_END_NAMESPACE diff --git a/src/multimedia/qmediaobject.cpp b/src/multimedia/qmediaobject.cpp index a12cab404..b5fc3273b 100644 --- a/src/multimedia/qmediaobject.cpp +++ b/src/multimedia/qmediaobject.cpp @@ -113,7 +113,6 @@ void QMediaObjectPrivate::_q_availabilityChanged() QMediaObject::~QMediaObject() { - delete d_ptr; } /*! @@ -230,15 +229,11 @@ void QMediaObject::unbind(QObject *object) constructor is protected. */ -QMediaObject::QMediaObject(QObject *parent, QMediaService *service): - QObject(parent), - d_ptr(new QMediaObjectPrivate) - +QMediaObject::QMediaObject(QObject *parent, QMediaService *service) + : QObject(*new QMediaObjectPrivate, parent) { Q_D(QMediaObject); - d->q_ptr = this; - d->notifyTimer = new QTimer(this); d->notifyTimer->setInterval(1000); connect(d->notifyTimer, SIGNAL(timeout()), SLOT(_q_notify())); @@ -252,13 +247,10 @@ QMediaObject::QMediaObject(QObject *parent, QMediaService *service): \internal */ -QMediaObject::QMediaObject(QMediaObjectPrivate &dd, QObject *parent, - QMediaService *service): - QObject(parent), - d_ptr(&dd) +QMediaObject::QMediaObject(QMediaObjectPrivate &dd, QObject *parent, QMediaService *service) + : QObject(dd, parent) { Q_D(QMediaObject); - d->q_ptr = this; d->notifyTimer = new QTimer(this); d->notifyTimer->setInterval(1000); diff --git a/src/multimedia/qmediaobject.h b/src/multimedia/qmediaobject.h index 5788254b8..fabd015fe 100644 --- a/src/multimedia/qmediaobject.h +++ b/src/multimedia/qmediaobject.h @@ -93,7 +93,9 @@ protected: void addPropertyWatch(QByteArray const &name); void removePropertyWatch(QByteArray const &name); - QMediaObjectPrivate *d_ptr; +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) + QMediaObjectPrivate *d_ptr_deprecated; +#endif private: void setupControls(); diff --git a/src/multimedia/qmediaobject_p.h b/src/multimedia/qmediaobject_p.h index 85caf9a50..5067fa6d1 100644 --- a/src/multimedia/qmediaobject_p.h +++ b/src/multimedia/qmediaobject_p.h @@ -56,6 +56,7 @@ #include #include "qmediaobject.h" +#include "private/qobject_p.h" QT_BEGIN_NAMESPACE @@ -68,12 +69,12 @@ class QMediaAvailabilityControl; friend class Class; -class QMediaObjectPrivate +class QMediaObjectPrivate : public QObjectPrivate { Q_DECLARE_PUBLIC(QMediaObject) public: - QMediaObjectPrivate() : service(nullptr), metaDataControl(nullptr), availabilityControl(nullptr), notifyTimer(nullptr), q_ptr(nullptr) {} + QMediaObjectPrivate() : service(nullptr), metaDataControl(nullptr), availabilityControl(nullptr), notifyTimer(nullptr) {} virtual ~QMediaObjectPrivate() {} void _q_notify(); @@ -85,8 +86,6 @@ public: QTimer* notifyTimer; QSet notifyProperties; - - QMediaObject *q_ptr; }; QT_END_NAMESPACE -- cgit v1.2.3