summaryrefslogtreecommitdiffstats
path: root/src/libs/installer
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-07-28 16:15:13 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-08-29 12:39:58 +0200
commitcf60ba8b28282d9ab08e53850b5d65a4454966f3 (patch)
treee4ca47243445507c84aeae7af1e2b31ad34ece39 /src/libs/installer
parent42d2b1ba06ad38fe938bc69f34f0d5714b1f201b (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.cpp5
-rw-r--r--src/libs/installer/binaryformatenginehandler.cpp23
-rw-r--r--src/libs/installer/binaryformatenginehandler.h10
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp4
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,