Core and PluginManager: Fixed Stop and Start again, the video plugin needed to be completely reset

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2012 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
John Peterson 2009-01-26 01:14:04 +00:00
parent 8eeb1d0202
commit 3c4a73d5a6
5 changed files with 18 additions and 1 deletions

View File

@ -130,7 +130,7 @@ int DynamicLibrary::Unload()
}
#ifdef _WIN32
Console::Print("FreeLibrary: %i\n", library);
Console::Print("FreeLibrary: %i\n", library_file.c_str());
retval = FreeLibrary(library);
#else
retval = dlclose(library)?0:1;

View File

@ -318,6 +318,7 @@ THREAD_RETURN EmuThread(void *pArg)
VideoInitialize.pMemoryBase = Memory::base;
VideoInitialize.pKeyPress = Callback_KeyPress;
VideoInitialize.bWii = _CoreParameter.bWii;
Plugins.FreeVideo(); // This is needed for Stop and Start
Plugins.GetVideo()->Initialize(&VideoInitialize); // Call the dll
// Under linux, this is an X11 Display, not an HWND!

View File

@ -342,12 +342,23 @@ Common::PluginVideo *CPluginManager::GetVideo()
return m_video;
}
// ----------------------------------------
// Free plugins to completely reset all variables and potential DLLs loaded by the plugins in turn
// -------------
Common::PluginVideo *CPluginManager::FreeVideo()
{
delete m_video;
m_video = NULL;
m_video = (Common::PluginVideo*)LoadPlugin(m_params.m_strVideoPlugin.c_str(), 0);
return m_video;
}
Common::PluginPAD *CPluginManager::FreePad()
{
delete m_pad[0];
m_pad[0] = NULL; m_pad[1] = NULL; m_pad[2] = NULL; m_pad[3] = NULL;
m_pad[0] = (Common::PluginPAD*)LoadPlugin(m_params.m_strPadPlugin[0].c_str(), 0);
return m_pad[0];
}
///////////////////////////////////////////

View File

@ -51,6 +51,7 @@ public:
Common::PluginDSP *GetDSP();
Common::PluginVideo *GetVideo();
Common::PluginPAD *FreePad();
Common::PluginVideo *FreeVideo();
bool InitPlugins();
void ShutdownPlugins();

View File

@ -623,6 +623,10 @@
RelativePath="..\..\PluginSpecs\pluginspecs_wiimote.h"
>
</File>
<File
RelativePath=".\Src\SConscript"
>
</File>
</Files>
<Globals>
</Globals>