aboutsummaryrefslogtreecommitdiff
path: root/base/plugins.cpp
AgeCommit message (Collapse)Author
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.
2017-07-10Revert "COMMON: Change way the Singleton instances are instantiated"Eugene Sandulenko
This reverts commit eefa72afa1978a9dea10f5b1833fcc8f58a3468e. With this patch ConfigManager is broken.
2017-07-10COMMON: Change way the Singleton instances are instantiatedThierry Crozat
This fixes tons of warnings with clang from a recent xcode version on macOS (and possibly other systems) complaining that an instantiation of _singleton is required but no definition is available.
2014-02-18BASE: Make GPL headers consistent in themselves.Johannes Schickel
2014-01-25BASE: Small formatting fix.Johannes Schickel
2012-05-15MIDI: add sndio midi backendJonathan Gray
New sndio MIDI backend for OpenBSD written by Alexandre Ratchov. Tested with an external MT-32 and fluidsynth.
2012-04-18ENGINES: Move table of engines from base/plugins.cpp to new headerMax Horn
The new header engines/plugins_table.h is currently manually created and maintained, but could be regenerated by a script in the future.
2012-02-10BASE: Remove unneeded code in PluginManagerUncached.Johannes Schickel
Thanks to Yotam for confirming that this isn't needed anymore.
2011-11-20TOLTECS: integrate engineAlex Bevilacqua
2011-11-20M4: Removed the M4/MADS engine from trunkPaul Gilbert
2011-08-22Merge remote-tracking branch 'origin/master' into soltys_wip2Alyssa Milburn
2011-08-22BASE: Fix indentationSven Hesse
2011-08-21BADA: Remove BADA defined check. Was a temp fix for simulator buildChris Warren-Smith
2011-08-21BADA: Initial BADA port implementationChris Warren-Smith
2011-07-14COMPOSER: Add a first attempt at an engine.Alyssa Milburn
2011-07-07Merge remote-tracking branch 'origin/master' into soltys_wip2Alyssa Milburn
2011-06-30ALL: Require DECLARE_SINGLETON to be used in the Common namepsaceOri Avtalion
Silences the clang warning: static data member specialization of '_singleton' must originally be declared in namespace 'Common'; accepted as a C++0x extension [-Wc++0x-extensions] Wrapping "namespace Common {}" around the macro assignment causes clang to complain about a spurious semicolon, and removing the semicolon at the end of the macro causes some editors to misbehave. Changing the requirement of using the macro in one namespace (the global) to another (Common) seems a small price to pay to silence a warning.
2011-06-29Merge branch 'master' of github.com:scummvm/scummvm into soltys_wip2Strangerke
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-06-15DREAMWEB: added autogenerated sourceVladimir
2011-09-10CGE: Add minimal engine and detectionStrangerke
2011-05-17FM-TOWNS AUDIO: Some more midi driver code for FM-TOWNS monkey2 and indy4athrxx
2011-05-12GIT: Clean up: Suppress SVN tags, now uselessstrangerke
2011-04-13Merge remote branch 'remotes/dreammaster/tsage'Paul Gilbert
2011-03-25ANDROID: Experimental MIDI Driverdhewg
Based on the SONiVOX® Embedded Audio Synthesis (EAS™) library, which is part of the base Android OS. CPU stats (Cortex A8 1GHz, monkey1 intro, peak values): MAME OPL: 30% DosBox OPL: 26% EAS: 19%
2011-02-14TSAGE: Added the engine in a separate branchPaul Gilbert
2011-02-09AUDIO: Rename sound/ dir to audio/Max Horn
svn-id: r55850
2011-01-02PLUGINS: for uncached plugins, first check the loaded plugin before looking ↵Yotam Barnoy
elsewhere There are some calls to EngineManager::findGame() from within games, such as when loading saved games. It's critical not to unload the plugin from memory or other threads may crash. Therefore, we first scan using any plugin that's already in memory. svn-id: r55089
2010-12-30PLUGINS: rename ONE_PLUGIN_AT_A_TIME define to UNCACHED_PLUGINSYotam Barnoy
ONE_PLUGIN_AT_A_TIME is too long. svn-id: r55064
2010-12-29PLUGINS: fixed MSVC buildFlorian Kagerer
svn-id: r55062
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: 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-12-23PLUGINS: don't fully load each plugins at startup for single plugin methodYotam Barnoy
The reason to load each plugin was to figure out if it's a sound or engine plugin. Since all our plugin files are currently engines, there's no reason to load every file. If we get dynamic sound plugins, it'd be a good idea to make a quick and easy way to know which kind of plugin it is (e.g. a prefix or suffix in the filename). svn-id: r55021
2010-11-16COMMON: Simplify DECLARE_SINGLETON macroMax Horn
This makes it possible to write DECLARE_SINGLETON(foo); instead of DECLARE_SINGLETON(foo) without causing a warning about an extra semicolon. The extra semicolon helps some editors at parsing the C++ code. svn-id: r54258
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-10-31Updated with latest from trunkYotam Barnoy
svn-id: r53976
2010-10-18CONFIGURE: Plug in Last Express engineEugene Sandulenko
svn-id: r53580
2010-10-13SOUND: Allow TiMidity support to be disabled via configure.Johannes Schickel
svn-id: r53395
2010-10-12SWORD25: Added detection of libtheora, png an dplugged in the engineEugene Sandulenko
svn-id: r53169
2010-10-08TOON: Merged Toon engine to ScummVM trunkEugene Sandulenko
svn-id: r53087
2010-09-17SOUND: Properly add CMS as plugin.Johannes Schickel
svn-id: r52779
2010-09-15PLUGINS: Don't expect every plugin to load.Andre Heider
svn-id: r52729
2010-09-12TESTBED: Merge gsoc2010-testbed branchEugene Sandulenko
svn-id: r52681
2010-09-05MERGE: Merge trunk to branch.Andre Heider
svn-id: r52564
2010-08-19Fix warning & code formattingMax Horn
svn-id: r52202
2010-08-17HUGO: Adding engine to the main treeEugene Sandulenko
svn-id: r52137
2010-08-16added a todo to plugins.cpp and a comment to elf32.h; Collapsed plugin ↵Tony Puccinelli
providers for a few ports into their .h files, removing the corresponding .cpp files svn-id: r52112
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-13refactored NEW_PLUGIN_DESIGN_FIRST_REFINEMENT define into ONE_PLUGIN_AT_A_TIMETony Puccinelli
svn-id: r52058
2010-08-12modified DS makefile to use new plugin design where only one plugin is ↵Tony Puccinelli
loaded at a time and tested successfully on the DS. Added code to prevent a crash in the case where there are no engine plugins present. Removed code for R_ARM_TARGET1 in arm-loader, as it is no longer used and was never used successfully svn-id: r52052