Age | Commit message (Collapse) | Author |
|
|
|
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.
|
|
This is undefined behavior and clang warns about it.
See <http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20160118/147239.html>.
|
|
|
|
|
|
|
|
This reverts commit 1e0de79cf54f2483c819584033ae3405ea7e8011.
The only available constructor for PluginManagerUncached is
protected, so this broke the builds using it.
|
|
|
|
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]*$//'
|
|
|
|
|
|
Some backends may break as I only compiled SDL
|
|
|
|
svn-id: r55898
|
|
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
|
|
svn-id: r55027
|
|
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
|
|
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
|
|
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
|
|
- Unify ELF loader handling in configure
- Rename ELF_LOADER_TARGET to USE_ELF_LOADER
svn-id: r52728
|
|
svn-id: r52613
|
|
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
|
|
svn-id: r52202
|
|
with 'ONE_PLUGIN_AT_A_TIME' defined
svn-id: r52080
|
|
adding/removing/running games on Linux with only one engine plugin loaded at a time
svn-id: r52026
|
|
added comments to loadFirstPlugin and loadNextPlugin
svn-id: r51673
|
|
loaded into memory at a time (first refinement)
svn-id: r51607
|
|
with only one plugin loaded at a time if you compile with a 'NEW_PLUGIN_DESIGN_FIRST_REFINEMENT' flag)
svn-id: r51502
|
|
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
|
|
svn-id: r35481
|
|
svn-id: r34716
|
|
paths) in its API
svn-id: r34709
|
|
'typedef Common::String String;' name aliases
svn-id: r34302
|
|
PLUGIN_ENABLED_DYNAMIC to not use 'defined()', thus avoiding compiler problems on e.g. BeOS
svn-id: r33114
|
|
svn-id: r32693
|
|
svn-id: r32351
|
|
MSVC was trying to add the parenthesis after ENABLE_##ID to the check...
svn-id: r32347
|
|
svn-id: r32275
|
|
svn-id: r32194
|
|
functionality.
svn-id: r32121
|
|
- 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
|
|
svn-id: r32085
|
|
svn-id: r32084
|
|
added/clarified/corrected various Doxygen comments for the plugin system
svn-id: r32083
|
|
the PluginObject subclass interfaces (thanks to Fingolfin for suggesting it)
- Added the PluginSubclass template to help creating Plugin subclasses
svn-id: r32082
|
|
svn-id: r32046
|
|
- base/plugins.* reorganization
svn-id: r32045
|
|
svn-id: r31904
|
|
svn-id: r31888
|
|
specify the default directory from configure.
svn-id: r31816
|