From 8e645502b87e972499ec6fe5662ec499c082029c Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 4 Dec 2009 07:53:07 +1000 Subject: Cleanup. --- src/declarative/graphicsitems/qmlgraphicsborderimage.cpp | 1 - src/declarative/graphicsitems/qmlgraphicsimage.cpp | 2 -- src/declarative/graphicsitems/qmlgraphicsimagebase.cpp | 2 +- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp b/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp index 71233c6..368c8bc 100644 --- a/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsborderimage.cpp @@ -69,7 +69,6 @@ QML_DEFINE_TYPE(Qt,4,6,BorderImage,QmlGraphicsBorderImage) QmlGraphicsBorderImage::QmlGraphicsBorderImage(QmlGraphicsItem *parent) : QmlGraphicsImageBase(*(new QmlGraphicsBorderImagePrivate), parent) { - setFlag(QGraphicsItem::ItemHasNoContents, false); } QmlGraphicsBorderImage::~QmlGraphicsBorderImage() diff --git a/src/declarative/graphicsitems/qmlgraphicsimage.cpp b/src/declarative/graphicsitems/qmlgraphicsimage.cpp index c75b9ce..239071c 100644 --- a/src/declarative/graphicsitems/qmlgraphicsimage.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsimage.cpp @@ -128,13 +128,11 @@ QML_DEFINE_TYPE(Qt,4,6,Image,QmlGraphicsImage) QmlGraphicsImage::QmlGraphicsImage(QmlGraphicsItem *parent) : QmlGraphicsImageBase(*(new QmlGraphicsImagePrivate), parent) { - setFlag(QGraphicsItem::ItemHasNoContents, false); } QmlGraphicsImage::QmlGraphicsImage(QmlGraphicsImagePrivate &dd, QmlGraphicsItem *parent) : QmlGraphicsImageBase(dd, parent) { - setFlag(QGraphicsItem::ItemHasNoContents, false); } QmlGraphicsImage::~QmlGraphicsImage() diff --git a/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp b/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp index e11e6c1..1620e73 100644 --- a/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsimagebase.cpp @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE QmlGraphicsImageBase::QmlGraphicsImageBase(QmlGraphicsImageBasePrivate &dd, QmlGraphicsItem *parent) : QmlGraphicsItem(dd, parent) { - setFlag(QGraphicsItem::ItemHasNoContents, true); + setFlag(QGraphicsItem::ItemHasNoContents, false); } QmlGraphicsImageBase::~QmlGraphicsImageBase() -- cgit v0.12 From 83162e22f9b4d59f7bcf9c2625a627aa7b8a0d03 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 4 Dec 2009 07:53:43 +1000 Subject: Minor optimization of image lookup from cache. --- src/declarative/util/qmlpixmapcache.cpp | 70 +++++++++++++++++---------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/src/declarative/util/qmlpixmapcache.cpp b/src/declarative/util/qmlpixmapcache.cpp index d4143e8..9509595 100644 --- a/src/declarative/util/qmlpixmapcache.cpp +++ b/src/declarative/util/qmlpixmapcache.cpp @@ -147,59 +147,62 @@ bool QmlPixmapCache::find(const QUrl& url, QPixmap *pixmap) QmlPerfTimer perf; #endif - QString key = url.toString(); bool ok = true; - if (!QPixmapCache::find(key,pixmap)) { #ifndef QT_NO_LOCALFILE_OPTIMIZED_QML - QString lf = toLocalFileOrQrc(url); - if (!lf.isEmpty()) { + QString lf = toLocalFileOrQrc(url); + if (!lf.isEmpty()) { + if (!QPixmapCache::find(lf,pixmap)) { QFile f(lf); if (f.open(QIODevice::ReadOnly)) { if (!readImage(&f, pixmap)) { qWarning() << "Format error loading" << url; *pixmap = QPixmap(); ok = false; + } else { + QPixmapCache::insert(lf, *pixmap); + ok = !pixmap->isNull(); } } else { *pixmap = QPixmap(); ok = false; } - } else + } else { + ok = !pixmap->isNull(); + } + return ok; + } #endif - { - QmlGraphicsSharedNetworkReplyHash::Iterator iter = qfxActiveNetworkReplies.find(key); - if (iter == qfxActiveNetworkReplies.end()) { - // API usage error - qWarning() << "QmlPixmapCache: URL not loaded" << url; + + QString key = url.toString(); + if (!QPixmapCache::find(key,pixmap)) { + QmlGraphicsSharedNetworkReplyHash::Iterator iter = qfxActiveNetworkReplies.find(key); + if (iter == qfxActiveNetworkReplies.end()) { + // API usage error + qWarning() << "QmlPixmapCache: URL not loaded" << url; + ok = false; + } else { + if ((*iter)->reply->error()) { + qWarning() << "Network error loading" << url << (*iter)->reply->errorString(); + *pixmap = QPixmap(); + ok = false; + } else if (!readImage((*iter)->reply, pixmap)) { + qWarning() << "Format error loading" << url; + *pixmap = QPixmap(); ok = false; } else { - if ((*iter)->reply->error()) { - qWarning() << "Network error loading" << url << (*iter)->reply->errorString(); - *pixmap = QPixmap(); - ok = false; - } else if (!readImage((*iter)->reply, pixmap)) { - qWarning() << "Format error loading" << url; - *pixmap = QPixmap(); - ok = false; - } else { - if ((*iter)->refCount > 1) - (*iter)->pixmap = *pixmap; - } - (*iter)->release(); + if ((*iter)->refCount > 1) + (*iter)->pixmap = *pixmap; } + (*iter)->release(); } QPixmapCache::insert(key, *pixmap); } else { ok = !pixmap->isNull(); -#ifndef QT_NO_LOCALFILE_OPTIMIZED_QML - if (url.scheme()!=QLatin1String("file")) -#endif + // We may be the second finder. Still need to check for active replies. - { - QmlGraphicsSharedNetworkReplyHash::Iterator iter = qfxActiveNetworkReplies.find(key); - if (iter != qfxActiveNetworkReplies.end()) - (*iter)->release(); - } + QmlGraphicsSharedNetworkReplyHash::Iterator iter = qfxActiveNetworkReplies.find(key); + if (iter != qfxActiveNetworkReplies.end()) + (*iter)->release(); } return ok; } @@ -223,8 +226,7 @@ QNetworkReply *QmlPixmapCache::get(QmlEngine *engine, const QUrl& url, QPixmap * #ifndef QT_NO_LOCALFILE_OPTIMIZED_QML QString lf = toLocalFileOrQrc(url); if (!lf.isEmpty()) { - QString key = url.toString(); - if (!QPixmapCache::find(key,pixmap)) { + if (!QPixmapCache::find(lf,pixmap)) { bool loaded = true; QFile f(lf); if (f.open(QIODevice::ReadOnly)) { @@ -239,7 +241,7 @@ QNetworkReply *QmlPixmapCache::get(QmlEngine *engine, const QUrl& url, QPixmap * loaded = false; } if (loaded) - QPixmapCache::insert(key, *pixmap); + QPixmapCache::insert(lf, *pixmap); if (ok) *ok = loaded; } return 0; -- cgit v0.12 From 5ec35c0756464ec512de0961c2ae41bec39ac2f7 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Fri, 4 Dec 2009 08:59:02 +1000 Subject: Minor optimizations. --- src/declarative/graphicsitems/qmlgraphicsitem.cpp | 3 ++- src/declarative/util/qmlanimation_p_p.h | 16 ++++++++-------- src/declarative/util/qmltransition.cpp | 7 ++++--- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/declarative/graphicsitems/qmlgraphicsitem.cpp b/src/declarative/graphicsitems/qmlgraphicsitem.cpp index 1bf1089..a858d87 100644 --- a/src/declarative/graphicsitems/qmlgraphicsitem.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsitem.cpp @@ -1491,6 +1491,7 @@ QmlGraphicsItem::~QmlGraphicsItem() d->dependantAnchors.clear(); delete d->_anchorLines; d->_anchorLines = 0; delete d->_anchors; d->_anchors = 0; + delete d->_stateGroup; d->_stateGroup = 0; } /*! @@ -2620,7 +2621,7 @@ QmlStateGroup *QmlGraphicsItemPrivate::states() { Q_Q(QmlGraphicsItem); if (!_stateGroup) { - _stateGroup = new QmlStateGroup(q); + _stateGroup = new QmlStateGroup; if (!_componentComplete) _stateGroup->classBegin(); QObject::connect(_stateGroup, SIGNAL(stateChanged(QString)), diff --git a/src/declarative/util/qmlanimation_p_p.h b/src/declarative/util/qmlanimation_p_p.h index 326e1c6..e7163c4 100644 --- a/src/declarative/util/qmlanimation_p_p.h +++ b/src/declarative/util/qmlanimation_p_p.h @@ -201,14 +201,14 @@ public: connectedTimeLine(false), componentComplete(true), startOnCompletion(false), target(0), group(0) {} - bool running; - bool paused; - bool alwaysRunToEnd; - bool repeat; - bool connectedTimeLine; - - bool componentComplete; - bool startOnCompletion; + bool running:1; + bool paused:1; + bool alwaysRunToEnd:1; + bool repeat:1; + bool connectedTimeLine:1; + + bool componentComplete:1; + bool startOnCompletion:1; void commence(); diff --git a/src/declarative/util/qmltransition.cpp b/src/declarative/util/qmltransition.cpp index ad79890..9a8b70f4 100644 --- a/src/declarative/util/qmltransition.cpp +++ b/src/declarative/util/qmltransition.cpp @@ -71,7 +71,7 @@ class ParallelAnimationWrapper : public QParallelAnimationGroup { Q_OBJECT public: - ParallelAnimationWrapper(QObject *parent) : QParallelAnimationGroup(parent) {} + ParallelAnimationWrapper(QObject *parent = 0) : QParallelAnimationGroup(parent) {} QmlTransitionPrivate *trans; protected: virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState); @@ -96,8 +96,7 @@ public: void init() { - Q_Q(QmlTransition); - group = new ParallelAnimationWrapper(q); + group = new ParallelAnimationWrapper; group->trans = this; } @@ -146,6 +145,8 @@ QmlTransition::QmlTransition(QObject *parent) QmlTransition::~QmlTransition() { + Q_D(QmlTransition); + delete d->group; } void QmlTransition::stop() -- cgit v0.12