diff options
author | Gunnar Sletta <gunnar.sletta@jollamobile.com> | 2015-06-07 12:30:20 +0200 |
---|---|---|
committer | Gunnar Sletta <gunnar@sletta.org> | 2015-06-08 06:38:24 +0000 |
commit | e515fec1025ada6594c564fd5a90743abbc86edd (patch) | |
tree | d1978b83466872e744a82768b7efef5bb8913a73 /src/quick | |
parent | 926303a9f8946a2ff36bfcb57d035b9c870646c0 (diff) |
Fix performance regression in Image construction.
Setting up the signal leads to a significant memory and performance
overhead. This patch improves the benchmark by almost 10%.
Change-Id: Ib0a76ba42fdce1ca707044a8f8b6bdc6405f20c3
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickimage.cpp | 1 | ||||
-rw-r--r-- | src/quick/items/qquickimage_p.h | 2 | ||||
-rw-r--r-- | src/quick/items/qquickimagebase.cpp | 6 | ||||
-rw-r--r-- | src/quick/items/qquickimagebase_p.h | 5 |
4 files changed, 9 insertions, 5 deletions
diff --git a/src/quick/items/qquickimage.cpp b/src/quick/items/qquickimage.cpp index f0f17551b7..3ba09f9cea 100644 --- a/src/quick/items/qquickimage.cpp +++ b/src/quick/items/qquickimage.cpp @@ -152,7 +152,6 @@ QQuickImagePrivate::QQuickImagePrivate() QQuickImage::QQuickImage(QQuickItem *parent) : QQuickImageBase(*(new QQuickImagePrivate), parent) { - connect(this, SIGNAL(autoTransformBaseChanged()), SIGNAL(autoTransformChanged())); } QQuickImage::QQuickImage(QQuickImagePrivate &dd, QQuickItem *parent) diff --git a/src/quick/items/qquickimage_p.h b/src/quick/items/qquickimage_p.h index 5b1aea5940..8edf153ca3 100644 --- a/src/quick/items/qquickimage_p.h +++ b/src/quick/items/qquickimage_p.h @@ -88,6 +88,8 @@ public: bool mipmap() const; void setMipmap(bool use); + virtual void emitAutoTransformBaseChanged() { emit autoTransformChanged(); } + Q_SIGNALS: void fillModeChanged(); void paintedGeometryChanged(); diff --git a/src/quick/items/qquickimagebase.cpp b/src/quick/items/qquickimagebase.cpp index 0e2134842b..223cb8f46f 100644 --- a/src/quick/items/qquickimagebase.cpp +++ b/src/quick/items/qquickimagebase.cpp @@ -197,7 +197,7 @@ void QQuickImageBase::load() } if (autoTransform() != d->oldAutoTransform) { d->oldAutoTransform = autoTransform(); - emit autoTransformBaseChanged(); + emitAutoTransformBaseChanged(); } update(); @@ -284,7 +284,7 @@ void QQuickImageBase::requestFinished() } if (autoTransform() != d->oldAutoTransform) { d->oldAutoTransform = autoTransform(); - emit autoTransformBaseChanged(); + emitAutoTransformBaseChanged(); } update(); } @@ -390,7 +390,7 @@ void QQuickImageBase::setAutoTransform(bool transform) if (d->autoTransform != UsePluginDefault && transform == (d->autoTransform == ApplyTransform)) return; d->autoTransform = transform ? ApplyTransform : DoNotApplyTransform; - emit autoTransformBaseChanged(); + emitAutoTransformBaseChanged(); } QT_END_NAMESPACE diff --git a/src/quick/items/qquickimagebase_p.h b/src/quick/items/qquickimagebase_p.h index d43822bebe..4fcfaecd7d 100644 --- a/src/quick/items/qquickimagebase_p.h +++ b/src/quick/items/qquickimagebase_p.h @@ -83,6 +83,10 @@ public: void resolve2xLocalFile(const QUrl &url, qreal targetDevicePixelRatio, QUrl *sourceUrl, qreal *sourceDevicePixelRatio); + // Use a virtual rather than a signal->signal to avoid the huge + // connect/conneciton overhead for this rare case. + virtual void emitAutoTransformBaseChanged() { } + Q_SIGNALS: void sourceChanged(const QUrl &); void sourceSizeChanged(); @@ -91,7 +95,6 @@ Q_SIGNALS: void asynchronousChanged(); void cacheChanged(); void mirrorChanged(); - void autoTransformBaseChanged(); protected: virtual void load(); |