diff options
Diffstat (limited to 'src/corelib/plugin/qlibrary_p.h')
-rw-r--r-- | src/corelib/plugin/qlibrary_p.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h index 28bec300eb..abf11be9f7 100644 --- a/src/corelib/plugin/qlibrary_p.h +++ b/src/corelib/plugin/qlibrary_p.h @@ -71,6 +71,7 @@ QT_BEGIN_NAMESPACE bool qt_debug_component(); +class QLibraryStore; class QLibraryPrivate { public: @@ -82,12 +83,14 @@ public: #endif pHnd; + enum UnloadFlag { UnloadSys, NoUnloadSys }; + QString fileName, qualifiedFileName; QString fullVersion; bool load(); bool loadPlugin(); // loads and resolves instance - bool unload(); + bool unload(UnloadFlag flag = UnloadSys); void release(); QFunctionPointer resolve(const char *); @@ -124,11 +127,13 @@ private: bool unload_sys(); QFunctionPointer resolve_sys(const char *); + /// counts how many QLibrary or QPluginLoader are attached to us, plus 1 if it's loaded QAtomicInt libraryRefCount; + /// counts how many times load() or loadPlugin() were called QAtomicInt libraryUnloadCount; enum { IsAPlugin, IsNotAPlugin, MightBeAPlugin } pluginState; - friend class QLibraryPrivateHasFriends; + friend class QLibraryStore; }; QT_END_NAMESPACE |