[Scummvm-cvs-logs] SF.net SVN: scummvm: [30785] scummvm/trunk/backends/plugins
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Mon Feb 4 08:38:42 CET 2008
Revision: 30785
http://scummvm.svn.sourceforge.net/scummvm/?rev=30785&view=rev
Author: fingolfin
Date: 2008-02-03 23:38:42 -0800 (Sun, 03 Feb 2008)
Log Message:
-----------
Fix plugin unloading / cleanup
Modified Paths:
--------------
scummvm/trunk/backends/plugins/dc/dc-provider.cpp
scummvm/trunk/backends/plugins/dynamic-plugin.h
scummvm/trunk/backends/plugins/posix/posix-provider.cpp
scummvm/trunk/backends/plugins/sdl/sdl-provider.cpp
scummvm/trunk/backends/plugins/win32/win32-provider.cpp
Modified: scummvm/trunk/backends/plugins/dc/dc-provider.cpp
===================================================================
--- scummvm/trunk/backends/plugins/dc/dc-provider.cpp 2008-02-04 02:50:41 UTC (rev 30784)
+++ scummvm/trunk/backends/plugins/dc/dc-provider.cpp 2008-02-04 07:38:42 UTC (rev 30785)
@@ -76,6 +76,7 @@
return ret;
}
void unloadPlugin() {
+ DynamicPlugin::unloadPlugin();
if (_dlHandle) {
if (dlclose(_dlHandle) != 0)
warning("Failed unloading plugin '%s' (%s)", _filename.c_str(), dlerror());
Modified: scummvm/trunk/backends/plugins/dynamic-plugin.h
===================================================================
--- scummvm/trunk/backends/plugins/dynamic-plugin.h 2008-02-04 02:50:41 UTC (rev 30784)
+++ scummvm/trunk/backends/plugins/dynamic-plugin.h 2008-02-04 07:38:42 UTC (rev 30785)
@@ -42,11 +42,6 @@
public:
DynamicPlugin() : _metaengine(0) {}
- ~DynamicPlugin() {
- // FIXME: The plugin has already been unloaded, so _metaengine isn't
- // a valid pointer anymore, and you can't call unloadPlugin from here.
- //delete _metaengine;
- }
const char *getName() const {
return _metaengine->getName();
@@ -88,6 +83,10 @@
return true;
}
+
+ virtual void unloadPlugin() {
+ delete _metaengine;
+ }
};
#endif
Modified: scummvm/trunk/backends/plugins/posix/posix-provider.cpp
===================================================================
--- scummvm/trunk/backends/plugins/posix/posix-provider.cpp 2008-02-04 02:50:41 UTC (rev 30784)
+++ scummvm/trunk/backends/plugins/posix/posix-provider.cpp 2008-02-04 07:38:42 UTC (rev 30785)
@@ -69,6 +69,7 @@
return DynamicPlugin::loadPlugin();
}
void unloadPlugin() {
+ DynamicPlugin::unloadPlugin();
if (_dlHandle) {
if (dlclose(_dlHandle) != 0)
warning("Failed unloading plugin '%s' (%s)", _filename.c_str(), dlerror());
Modified: scummvm/trunk/backends/plugins/sdl/sdl-provider.cpp
===================================================================
--- scummvm/trunk/backends/plugins/sdl/sdl-provider.cpp 2008-02-04 02:50:41 UTC (rev 30784)
+++ scummvm/trunk/backends/plugins/sdl/sdl-provider.cpp 2008-02-04 07:38:42 UTC (rev 30785)
@@ -70,6 +70,7 @@
return DynamicPlugin::loadPlugin();
}
void unloadPlugin() {
+ DynamicPlugin::unloadPlugin();
if (_dlHandle) {
SDL_UnloadObject(_dlHandle);
_dlHandle = 0;
Modified: scummvm/trunk/backends/plugins/win32/win32-provider.cpp
===================================================================
--- scummvm/trunk/backends/plugins/win32/win32-provider.cpp 2008-02-04 02:50:41 UTC (rev 30784)
+++ scummvm/trunk/backends/plugins/win32/win32-provider.cpp 2008-02-04 07:38:42 UTC (rev 30785)
@@ -95,6 +95,7 @@
return DynamicPlugin::loadPlugin();
}
void unloadPlugin() {
+ DynamicPlugin::unloadPlugin();
if (_dlHandle) {
if (!FreeLibrary((HMODULE)_dlHandle))
debug("Failed unloading plugin '%s'", _filename.c_str());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list