summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2020-10-02 16:17:45 +0200
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2020-10-16 01:07:45 +0200
commit56475926e686408acdb3d2db3dfa072c36d0c574 (patch)
tree672852e421d47b9326fb67c5a591be5238dc3fc5 /src/gui
parent35c565e965c02f530483fe93fa6241d57646f1aa (diff)
Port QColorTransform to QESDP
Remove the hand-rolled refcount management code, and cleanup the existing constructors. Change-Id: I1b91dbf888feff25d67310637d42dcdc3acaac13 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/painting/qcolorspace.cpp1
-rw-r--r--src/gui/painting/qcolortransform.cpp14
-rw-r--r--src/gui/painting/qcolortransform.h10
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 <QtGui/qtguiglobal.h>
#include <QtGui/qrgb.h>
+#include <QtCore/qshareddata.h>
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<QColorTransformPrivate> d;
};
Q_DECLARE_SHARED(QColorTransform)