diff options
Diffstat (limited to 'src/libs')
-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, |