diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-06-18 14:48:21 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-18 16:12:41 +0200 |
commit | 732dcfe7fdfa7534ab0de4674ae17f191167a57a (patch) | |
tree | 1e1d46fe4154fa9443cb14358752503cf0113ae9 /src/corelib/plugin/qfactoryloader.cpp | |
parent | cf8647d6aa0f65a51dc9366d407b2218f561970d (diff) |
QFactoryLoader: Release unused libraries.
Task-number: QTBUG-31476
Change-Id: Ib2eb076afaa21ab1fdc12944f80483e3de260d4b
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/corelib/plugin/qfactoryloader.cpp')
-rw-r--r-- | src/corelib/plugin/qfactoryloader.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp index 943fb35ab6..1288643e32 100644 --- a/src/corelib/plugin/qfactoryloader.cpp +++ b/src/corelib/plugin/qfactoryloader.cpp @@ -183,7 +183,7 @@ void QFactoryLoader::update() continue; } - d->libraryList += library; + int keyUsageCount = 0; for (int k = 0; k < keys.count(); ++k) { // first come first serve, unless the first // library was built with a future Qt version, @@ -198,8 +198,13 @@ void QFactoryLoader::update() int qt_version = (int)library->metaData.value(QLatin1String("version")).toDouble(); if (!previous || (prev_qt_version > QT_VERSION && qt_version <= QT_VERSION)) { d->keyMap[key] = library; + ++keyUsageCount; } } + if (keyUsageCount || keys.isEmpty()) + d->libraryList += library; + else + library->release(); } } #else |