BASE: PLUGINS: Add support for detection plugins to be loaded on demand.

- Mainly used for UncachedPluginManagers.
- CachedPluginManagers will not handle these, as metaengines will always be available in memory.
This commit is contained in:
aryanrawlani28 2020-08-12 18:13:40 +05:30 committed by Eugene Sandulenko
parent b78534dcb0
commit 8dfaf6cc0e
2 changed files with 66 additions and 1 deletions

View file

@ -367,6 +367,8 @@ public:
virtual bool loadNextPlugin() { return false; }
virtual bool loadPluginFromEngineId(const Common::String &engineId) { return false; }
virtual void updateConfigWithFileName(const Common::String &engineId) {}
virtual void loadDetectionPlugin() {}
virtual void unloadDetectionPlugin() {}
// Functions used only by the cached PluginManager
virtual void loadAllPlugins();
@ -386,9 +388,12 @@ class PluginManagerUncached : public PluginManager {
protected:
friend class PluginManager;
PluginList _allEnginePlugins;
Plugin *_detectionPlugin;
PluginList::iterator _currentPlugin;
PluginManagerUncached() {}
bool _isDetectionLoaded;
PluginManagerUncached() : _isDetectionLoaded(false) {}
bool loadPluginByFileName(const Common::String &filename);
public:
@ -397,6 +402,8 @@ public:
virtual bool loadNextPlugin();
virtual bool loadPluginFromEngineId(const Common::String &engineId);
virtual void updateConfigWithFileName(const Common::String &engineId);
virtual void loadDetectionPlugin() override;
virtual void unloadDetectionPlugin() override;
virtual void loadAllPlugins() {} // we don't allow these
virtual void loadAllPluginsOfType(PluginType type) {}