aboutsummaryrefslogtreecommitdiff
path: root/base/plugins.h
AgeCommit message (Collapse)Author
2019-03-10BASE: Only reload engine plugins after return to launcherEric Culp
The other plugins do not need to be reloaded. Reloading the scaler plugins breaks the graphics.
2019-03-02WIN32: Fix embedding disabled engine filessluicebox
Fix Windows builds (msvc and mingw) including data files from disabled engines as embedded resources in executable. Bug #10878
2018-04-15JANITORIAL: Fix whitespaceAdrian Frühwirth
2017-12-03BASE: Remove bad casts between incompatible Plugin typesColin Snover
Previously, a C-style cast was used to convert a Common::Array<Plugin *>, populated with pointers to StaticPlugin and DynamicPlugin instances, to a Common::Array<PluginSubclass<T> *>, but PluginSubclass<T> is a *sibling* class to StaticPlugin/DynamicPlugin, so this cast was invalid and the results undefined. The methods for retrieving subclasses of plugins can't be easily changed to just generate an array of temporary wrapper objects that expose an identical API which dereferences to the preferred PluginObject subclass because pointers to these objects are retained by other parts of ScummVM, so the wrappers would needed to be persisted or they would need to just re-expose the underlying Plugin object again. This indicated that a way to solve this problem is to have the callers receive Plugin objects and get the PluginObject from the Plugin by explicitly stating their desired type, in a similar manner to std::get(std::variant), so that the pattern used by this patch to solve the problem. Closes gh-1051.
2016-07-23ALL: Don't use 'defined' in macro definitionsOri Avtalion
This is undefined behavior and clang warns about it. See <http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20160118/147239.html>.
2014-02-18BASE: Make GPL headers consistent in themselves.Johannes Schickel
2013-09-30BASE: Fix uninitialized type field in plugin base class. CID 1002938.D G Turner
2012-06-14BASE: Add operator* to PluginSubclass.Johannes Schickel
2012-02-01Revert "BASE: Get rid of unecessary friend in PluginManagerUncached."Alyssa Milburn
This reverts commit 1e0de79cf54f2483c819584033ae3405ea7e8011. The only available constructor for PluginManagerUncached is protected, so this broke the builds using it.
2012-02-01BASE: Get rid of unecessary friend in PluginManagerUncached.Johannes Schickel
2011-06-20ALL: Remove trailing whitespacesMax Horn
This tries to make our code a bit more compliant with our code formatting conventions. For future use, this is the command I used: git ls-files "*.cpp" "*.h" | xargs sed -i -e 's/[ \t]*$//'
2011-05-31BUILD: Fix compilation when --enable-plugins is enabled.D G Turner
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-04-28JANITORIAL: Reduce header dependencies in shared codeOri Avtalion
Some backends may break as I only compiled SDL
2011-04-28JANITORIAL: Format forward declarations to follow conventionOri Avtalion
2011-02-12BUILD: Remove explicit references to SVN in revision variable names.Jordi Vilalta Prat
svn-id: r55898
2010-12-29PLUGINS: single plugin model now saves plugin filename to config fileYotam Barnoy
After searching for the right plugin once, the filename will be saved to the config file under the domain 'plugin_files'. The key is the gameid and the value is the plugin file. The backup mechanism is searching plugin by plugin. svn-id: r55061
2010-12-23PLUGINS: PluginManager minor cleanupsYotam Barnoy
svn-id: r55027
2010-12-23PLUGINS: switched plugin manager to inheritance rather than #definesYotam Barnoy
The reason for this was that I found issues where the wrong functions were called in EngineManager for single plugin operation. Rather than inserting more messy #defines, I preferred to change the PluginManager to use virtual functions, which also makes EngineManager simpler. svn-id: r55024
2010-11-05PLUGINS: improved one-at-a-time plugin codeYotam Barnoy
I reduced memory fragmentation using 2 principles: Plugins should be loaded for as little time as possible, and long lasting memory allocations should be allocated before plugins are loaded. There might still be a little fragmentation left. Note that command line settings that require plugins to be loaded don't work yet, but they didn't work (properly) before either. svn-id: r54097
2010-09-15PLUGINS: Additional plugin check for the ELF loader.Andre Heider
The ELF loader does not have access to the symbols of the main executable, it just relocates symbols to it via fixed offsets. We need to make sure that loaded plugins are from the same link process to prevent crashes. An embedded build date is used for that. svn-id: r52730
2010-09-15PLUGINS: Cleanup.Andre Heider
- Unify ELF loader handling in configure - Rename ELF_LOADER_TARGET to USE_ELF_LOADER svn-id: r52728
2010-09-06PLUGINS: Fix warning when not using the ELF loader.Andre Heider
svn-id: r52613
2010-09-06PLUGINS: Use the C++ ABI to call dtors when unloading a plugin.Andre Heider
Avoid linking all plugins against libstdc++ to free up some memory (about ~40kb on Wii per plugin). Enable it on GameCube, Wii, DS and PSP (PS2 doesn't have __cxa_atexit support in its libc). svn-id: r52607
2010-08-19Fix warning & code formattingMax Horn
svn-id: r52202
2010-08-14Ensured getPlugins is not called multiple times on Static Plugin Provider ↵Tony Puccinelli
with 'ONE_PLUGIN_AT_A_TIME' defined svn-id: r52080
2010-08-12Refined first refinement of new plugin design. Tested successfully ↵Tony Puccinelli
adding/removing/running games on Linux with only one engine plugin loaded at a time svn-id: r52026
2010-08-03gave plugin iterators more appropriate names, removed debugging printf, ↵Tony Puccinelli
added comments to loadFirstPlugin and loadNextPlugin svn-id: r51673
2010-08-02changed plugins so games can be added in the launcher with only one plugin ↵Tony Puccinelli
loaded into memory at a time (first refinement) svn-id: r51607
2010-07-30initial work on plugin design changes (already added games can be launched ↵Tony Puccinelli
with only one plugin loaded at a time if you compile with a 'NEW_PLUGIN_DESIGN_FIRST_REFINEMENT' flag) svn-id: r51502
2010-03-18COMMON: Move typedef StringList from str.h to new header str-array.hMax Horn
This removes the dependency on array.h from str.h. Also, begun migration from the confusing type name "StringList" to the more appropriate StringArray. svn-id: r48282
2008-12-22Fixed indentation and removed whitespaces at the end of lineJordi Vilalta Prat
svn-id: r35481
2008-10-02Renamed FilesystemNode -> FSNodeMax Horn
svn-id: r34716
2008-09-30Modified FilePluginProvider to use FSNodes (instead of raw filenames / ↵Max Horn
paths) in its API svn-id: r34709
2008-09-03Moved FilesystemNode / FSList to namespace Common; also got rid of some ↵Max Horn
'typedef Common::String String;' name aliases svn-id: r34302
2008-07-19Removed -Wundef from the default list of compiler flags, and changed ↵Max Horn
PLUGIN_ENABLED_DYNAMIC to not use 'defined()', thus avoiding compiler problems on e.g. BeOS svn-id: r33114
2008-06-13Renamed MIDI plugins to Music pluginsJordi Vilalta Prat
svn-id: r32693
2008-05-28Added a note about the MSVC quirk with the spaces around ENABLE_##IDFilippos Karapetis
svn-id: r32351
2008-05-28Removed an MSVC specific hack, after discussing with jvprat. It seems that ↵Filippos Karapetis
MSVC was trying to add the parenthesis after ENABLE_##ID to the check... svn-id: r32347
2008-05-26Fixed some code formatting thanks to LordHotoJordi Vilalta Prat
svn-id: r32275
2008-05-20Add a tiny TODO entry for graphics scaler pluginsMax Horn
svn-id: r32194
2008-05-14Added plugin priority so there's just one plugin that provides a module ↵Jordi Vilalta Prat
functionality. svn-id: r32121
2008-05-14- Added more information (ID and capabilities) to the MIDI driversJordi Vilalta Prat
- Added the MidiPlugin interface to the remaining MIDI drivers - Added an initial MidiManager to handle the MIDI plugins (just static plugins by now) svn-id: r32117
2008-05-13Taken care of FilePluginProvider's FIXMEsJordi Vilalta Prat
svn-id: r32085
2008-05-13Some more Doxygen comments, as well as some FIXMEs/TODOsMax Horn
svn-id: r32084
2008-05-13Moved the engine plugin code to engines/metaengine.h; ↵Max Horn
added/clarified/corrected various Doxygen comments for the plugin system svn-id: r32083
2008-05-13- Added operator-> to Plugin subclasses so they don't have to reimplement ↵Jordi Vilalta Prat
the PluginObject subclass interfaces (thanks to Fingolfin for suggesting it) - Added the PluginSubclass template to help creating Plugin subclasses svn-id: r32082
2008-05-12Keep separated arrays for each type of pluginJordi Vilalta Prat
svn-id: r32046
2008-05-12- Added an engine plugin manager and moved engine specific functionality into itJordi Vilalta Prat
- base/plugins.* reorganization svn-id: r32045
2008-05-06Added a temporary hack to get the engine plugins working under MSVCFilippos Karapetis
svn-id: r31904