summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2010-09-09 10:38:07 (GMT)
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2010-09-09 10:45:30 (GMT)
commit9d1361ab3affe34f1c3a08d3e4b83bd4e2c89eb8 (patch)
treef37dae997f3f8768d2f441e0b3f79dc0a4ad833e /src/corelib
parent647a3999bb073395ebb3df2137fb60e5b0435d16 (diff)
downloadQt-9d1361ab3affe34f1c3a08d3e4b83bd4e2c89eb8.zip
Qt-9d1361ab3affe34f1c3a08d3e4b83bd4e2c89eb8.tar.gz
Qt-9d1361ab3affe34f1c3a08d3e4b83bd4e2c89eb8.tar.bz2
Change RLibrary handle in QS60PluginResolver to be process wide
This fix enables Symbian version plugins to be accessed from all threads of the process. Task-number: QT-3895 Reviewed-by: Janne Koskinen
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/kernel/qcore_symbian_p.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/corelib/kernel/qcore_symbian_p.cpp b/src/corelib/kernel/qcore_symbian_p.cpp
index 5afde9a..66296b0 100644
--- a/src/corelib/kernel/qcore_symbian_p.cpp
+++ b/src/corelib/kernel/qcore_symbian_p.cpp
@@ -131,7 +131,6 @@ public:
private:
void init()
{
-#ifdef Q_OS_SYMBIAN
_LIT(KLibName_3_1, "qts60plugin_3_1" QT_LIBINFIX_UNICODE L".dll");
_LIT(KLibName_3_2, "qts60plugin_3_2" QT_LIBINFIX_UNICODE L".dll");
_LIT(KLibName_5_0, "qts60plugin_5_0" QT_LIBINFIX_UNICODE L".dll");
@@ -157,7 +156,12 @@ private:
TUidType libUid(KDynamicLibraryUid, KSharedLibraryUid, TUid::Uid(uidValue));
lib.Load(libName, libUid);
-#endif
+
+ // Duplicate lib handle to enable process wide access to it. Since Duplicate overwrites
+ // existing handle without closing it, store original for subsequent closing.
+ RLibrary origHandleCloser = lib;
+ lib.Duplicate(RThread(), EOwnerProcess);
+ origHandleCloser.Close();
}
RLibrary lib;