diff options
author | Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | 2011-06-10 11:28:05 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-11 18:58:41 +0200 |
commit | d1f080138a0bfaf845d051867c919bcb0e95c739 (patch) | |
tree | 0979e7642ea258e9e723f430e69b4e8903671dce /src/gui/image/qicon.cpp | |
parent | eab215070efb43867dd53279759b4f2c9b348567 (diff) |
Cleanup reference counting in QIcon class
It is better to use QSharedData and QExplicitlySharedDataPointer then
doing manual ref counting.
Change-Id: Icbb06d92102bcc906291238c5895a05e8d0e6de1
Reviewed-on: http://codereview.qt.nokia.com/1438
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com>
Diffstat (limited to 'src/gui/image/qicon.cpp')
-rw-r--r-- | src/gui/image/qicon.cpp | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index e24087c3c5..7cf749fabc 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -116,7 +116,7 @@ static void qt_cleanup_icon_cache() } QIconPrivate::QIconPrivate() - : engine(0), ref(1), + : engine(0), serialNum(serialNumCounter.fetchAndAddRelaxed(1)), detach_no(0), engine_version(2), @@ -536,10 +536,7 @@ QIcon::QIcon(const QPixmap &pixmap) */ QIcon::QIcon(const QIcon &other) :d(other.d) -{ - if (d) - d->ref.ref(); -} +{} /*! Constructs an icon from the file with the given \a fileName. The @@ -593,10 +590,7 @@ QIcon::QIcon(QIconEngineV2 *engine) Destroys the icon. */ QIcon::~QIcon() -{ - if (d && !d->ref.deref()) - delete d; -} +{} /*! Assigns the \a other icon to this icon and returns a reference to @@ -604,10 +598,6 @@ QIcon::~QIcon() */ QIcon &QIcon::operator=(const QIcon &other) { - if (other.d) - other.d->ref.ref(); - if (d && !d->ref.deref()) - delete d; d = other.d; return *this; } @@ -775,8 +765,6 @@ void QIcon::detach() x->v1RefCount->ref(); } x->engine_version = d->engine_version; - if (!d->ref.deref()) - delete d; d = x; } ++d->detach_no; |