diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-09-29 18:11:23 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2020-10-05 10:16:52 +0200 |
commit | 54232d6ea98a313390ee8f36bbadadce49ff97f3 (patch) | |
tree | 8ee48dfdc289d812787317e17bfa34f6a862d551 /src/gui/image | |
parent | 099f756ed5462c3b69b72696f8a46efdbfa0c8c2 (diff) |
Streamline the template specialization of QESDP's dtor
Declaring and implementing out of line a specialization for
QESDP's destructor is needed if we have an implicitly shared
type and we want to provide an inline move constructor for it.
The code is however a bit heavy on the eyes, and the full
implementation for the destructor must be provided (read:
copy and pasted) -- the specialization destructor cannot
just "reuse" the one from the primary template.
This patch adds a few macros to streamline the above, so
that we can start using the same pattern in more places.
These macros are completely private for the moment being;
we don't want to push this solution for our users.
Port QPixmap to the new macros.
Change-Id: Ia6a51ad988483e44c9d97c0eca2fb003b6bd21e3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/gui/image')
-rw-r--r-- | src/gui/image/qpixmap.cpp | 5 | ||||
-rw-r--r-- | src/gui/image/qpixmap.h | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index c3ae853795..d8473001aa 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -229,9 +229,8 @@ QPixmap::QPixmap(const QPixmap &pixmap) \sa swap() operator=(QPixmap&&) */ -template<> -QExplicitlySharedDataPointer<QPlatformPixmap>::~QExplicitlySharedDataPointer() -{ if (d && !d->ref.deref()) delete d; } + +QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QPlatformPixmap) /*! Constructs a pixmap from the given \a xpm data, which must be a diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h index e731597659..42d4e27102 100644 --- a/src/gui/image/qpixmap.h +++ b/src/gui/image/qpixmap.h @@ -57,7 +57,7 @@ class QImageReader; class QColor; class QVariant; class QPlatformPixmap; -template<> Q_GUI_EXPORT QExplicitlySharedDataPointer<QPlatformPixmap>::~QExplicitlySharedDataPointer(); +QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QPlatformPixmap, Q_GUI_EXPORT) class Q_GUI_EXPORT QPixmap : public QPaintDevice { |