From 56475926e686408acdb3d2db3dfa072c36d0c574 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Fri, 2 Oct 2020 16:17:45 +0200 Subject: [PATCH] Port QColorTransform to QESDP Remove the hand-rolled refcount management code, and cleanup the existing constructors. Change-Id: I1b91dbf888feff25d67310637d42dcdc3acaac13 Reviewed-by: Allan Sandfeld Jensen --- src/gui/painting/qcolorspace.cpp | 1 - src/gui/painting/qcolortransform.cpp | 14 +++----------- src/gui/painting/qcolortransform.h | 10 +++++----- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/gui/painting/qcolorspace.cpp b/src/gui/painting/qcolorspace.cpp index 5657a90b9b..baaac8b46d 100644 --- a/src/gui/painting/qcolorspace.cpp +++ b/src/gui/painting/qcolorspace.cpp @@ -339,7 +339,6 @@ QColorTransform QColorSpacePrivate::transformationToColorSpace(const QColorSpace QColorTransform combined; auto ptr = new QColorTransformPrivate; combined.d = ptr; - combined.d->ref.ref(); ptr->colorSpaceIn = this; ptr->colorSpaceOut = out; ptr->colorMatrix = out->toXyz.inverted() * toXyz; diff --git a/src/gui/painting/qcolortransform.cpp b/src/gui/painting/qcolortransform.cpp index 10ccefed74..013abf769a 100644 --- a/src/gui/painting/qcolortransform.cpp +++ b/src/gui/painting/qcolortransform.cpp @@ -134,19 +134,11 @@ void QColorTransformPrivate::updateLutsOut() const */ -QColorTransform::QColorTransform(const QColorTransform &colorTransform) noexcept - : d(colorTransform.d) -{ - if (d) - d->ref.ref(); -} +QColorTransform::QColorTransform(const QColorTransform &colorTransform) noexcept = default; +QColorTransform::~QColorTransform() = default; -QColorTransform::~QColorTransform() -{ - if (d && !d->ref.deref()) - delete d; -} +QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QColorTransformPrivate) /*! Applies the color transformation on the QRgb value \a argb. diff --git a/src/gui/painting/qcolortransform.h b/src/gui/painting/qcolortransform.h index fa52f2e152..30aceebda3 100644 --- a/src/gui/painting/qcolortransform.h +++ b/src/gui/painting/qcolortransform.h @@ -42,6 +42,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -49,16 +50,15 @@ class QColor; class QRgba64; class QColorSpacePrivate; class QColorTransformPrivate; +QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QColorTransformPrivate, Q_GUI_EXPORT) class QColorTransform { public: - QColorTransform() noexcept : d(nullptr) { } + QColorTransform() noexcept = default; Q_GUI_EXPORT ~QColorTransform(); Q_GUI_EXPORT QColorTransform(const QColorTransform &colorTransform) noexcept; - QColorTransform(QColorTransform &&colorTransform) noexcept - : d{qExchange(colorTransform.d, nullptr)} - { } + QColorTransform(QColorTransform &&colorTransform) = default; QColorTransform &operator=(const QColorTransform &other) noexcept { QColorTransform{other}.swap(*this); @@ -77,7 +77,7 @@ private: friend class QColorSpacePrivate; friend class QImage; - const QColorTransformPrivate *d; + QExplicitlySharedDataPointer d; }; Q_DECLARE_SHARED(QColorTransform)