diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-07-28 16:15:13 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2014-08-29 12:39:58 +0200 |
commit | cf60ba8b28282d9ab08e53850b5d65a4454966f3 (patch) | |
tree | e4ca47243445507c84aeae7af1e2b31ad34ece39 /src/libs/installer | |
parent | 42d2b1ba06ad38fe938bc69f34f0d5714b1f201b (diff) |
Make BinaryFormatEngineHandler a real singleton.
It is really needed only once.
Change-Id: I0b2231432541c2781afe55105f88809db4fe19e1
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/libs/installer')
-rw-r--r-- | src/libs/installer/binarycontent.cpp | 5 | ||||
-rw-r--r-- | src/libs/installer/binaryformatenginehandler.cpp | 23 | ||||
-rw-r--r-- | src/libs/installer/binaryformatenginehandler.h | 10 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 4 |
4 files changed, 11 insertions, 31 deletions
diff --git a/src/libs/installer/binarycontent.cpp b/src/libs/installer/binarycontent.cpp index 049409b16..5e2c77ebe 100644 --- a/src/libs/installer/binarycontent.cpp +++ b/src/libs/installer/binarycontent.cpp @@ -145,8 +145,6 @@ public: QVector<QByteArray> m_resourceMappings; QVector<Range<qint64> > m_metadataResourceSegments; - - BinaryFormatEngineHandler m_binaryFormatEngineHandler; }; @@ -174,7 +172,6 @@ BinaryContent::Private::Private(const Private &other) , m_performedOperationsData(other.m_performedOperationsData) , m_resourceMappings(other.m_resourceMappings) , m_metadataResourceSegments(other.m_metadataResourceSegments) - , m_binaryFormatEngineHandler(other.m_binaryFormatEngineHandler) {} BinaryContent::Private::~Private() @@ -411,7 +408,7 @@ void BinaryContent::readBinaryData(BinaryContent &content, const QSharedPointer< ResourceCollectionManager collectionManager; collectionManager.read(file, dataBlockStart); - content.d->m_binaryFormatEngineHandler.registerResources(collectionManager.collections()); + BinaryFormatEngineHandler::instance()->registerResources(collectionManager.collections()); if (!QInstaller::isVerbose()) return; diff --git a/src/libs/installer/binaryformatenginehandler.cpp b/src/libs/installer/binaryformatenginehandler.cpp index b5af66493..8df9249bc 100644 --- a/src/libs/installer/binaryformatenginehandler.cpp +++ b/src/libs/installer/binaryformatenginehandler.cpp @@ -46,26 +46,6 @@ namespace QInstaller { -static BinaryFormatEngineHandler *s_instance = 0; - -BinaryFormatEngineHandler::BinaryFormatEngineHandler() -{ - s_instance = this; -} - -BinaryFormatEngineHandler::BinaryFormatEngineHandler(const BinaryFormatEngineHandler &other) - : QAbstractFileEngineHandler() -{ - Q_UNUSED(other) - s_instance = this; -} - -BinaryFormatEngineHandler::~BinaryFormatEngineHandler() -{ - if (s_instance == this) - s_instance = 0; -} - QAbstractFileEngine *BinaryFormatEngineHandler::create(const QString &fileName) const { return fileName.startsWith(QLatin1String("installer://"), Qt::CaseInsensitive ) @@ -79,7 +59,8 @@ void BinaryFormatEngineHandler::reset() BinaryFormatEngineHandler *BinaryFormatEngineHandler::instance() { - return s_instance; + static BinaryFormatEngineHandler instance; + return &instance; } void BinaryFormatEngineHandler::registerResources(const QList<ResourceCollection> &collections) diff --git a/src/libs/installer/binaryformatenginehandler.h b/src/libs/installer/binaryformatenginehandler.h index 4d45038f6..213861118 100644 --- a/src/libs/installer/binaryformatenginehandler.h +++ b/src/libs/installer/binaryformatenginehandler.h @@ -50,11 +50,9 @@ namespace QInstaller { class INSTALLER_EXPORT BinaryFormatEngineHandler : public QAbstractFileEngineHandler { -public: - BinaryFormatEngineHandler(); - BinaryFormatEngineHandler(const BinaryFormatEngineHandler &other); - ~BinaryFormatEngineHandler(); + Q_DISABLE_COPY(BinaryFormatEngineHandler) +public: QAbstractFileEngine *create(const QString &fileName) const; void reset(); @@ -64,6 +62,10 @@ public: void registerResource(const QString &fileName, const QString &resourcePath); private: + BinaryFormatEngineHandler() {} + ~BinaryFormatEngineHandler() {} + +private: QHash<QByteArray, ResourceCollection> m_resources; }; diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index df552e68d..1bb1a8c5e 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -385,8 +385,8 @@ bool PackageManagerCorePrivate::buildComponentTree(QHash<QString, Component*> &c void PackageManagerCorePrivate::cleanUpComponentEnvironment() { - // clean up already downloaded data, don't reset registered archives in offline installer case - if (BinaryFormatEngineHandler::instance() && !m_core->isInstaller()) + // clean up registered (downloaded) data + if (m_core->isUpdater() || m_core->isPackageManager()) BinaryFormatEngineHandler::instance()->reset(); // there could be still some references to already deleted components, |