diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2010-09-09 10:38:07 (GMT) |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2010-09-09 10:45:30 (GMT) |
commit | 9d1361ab3affe34f1c3a08d3e4b83bd4e2c89eb8 (patch) | |
tree | f37dae997f3f8768d2f441e0b3f79dc0a4ad833e /src/corelib | |
parent | 647a3999bb073395ebb3df2137fb60e5b0435d16 (diff) | |
download | Qt-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.cpp | 8 |
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; |