some linux stop issue fix (still not working right) please check on windows

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2076 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
nakeee 2009-02-02 22:31:31 +00:00
parent cfc128abff
commit d7a38393b7
3 changed files with 25 additions and 15 deletions

View File

@ -132,6 +132,23 @@ bool CPluginManager::InitPlugins()
void CPluginManager::ShutdownPlugins() void CPluginManager::ShutdownPlugins()
{ {
for (int i = 0; i < MAXPADS; i++) {
if (m_pad[i] && OkayToInitPlugin(i)) {
m_pad[i]->Shutdown();
}
}
for (int i = 0; i < MAXWIIMOTES; i++) {
if (m_wiimote[i]) m_wiimote[i]->Shutdown();
}
if (m_video)
m_video->Shutdown();
if (m_dsp)
m_dsp->Shutdown();
for (int i = 0; i < MAXPADS; i++) { for (int i = 0; i < MAXPADS; i++) {
if (m_pad[i] && OkayToInitPlugin(i)) { if (m_pad[i] && OkayToInitPlugin(i)) {
Console::Print("Delete: %i\n", i); Console::Print("Delete: %i\n", i);
@ -140,24 +157,17 @@ void CPluginManager::ShutdownPlugins()
m_pad[i] = NULL; m_pad[i] = NULL;
} }
for (int i = 0; i < MAXWIIMOTES; i++) {
if (m_wiimote[i]) m_wiimote[i]->Shutdown();
}
for (int i = 0; i < MAXWIIMOTES; i++) { for (int i = 0; i < MAXWIIMOTES; i++) {
delete m_wiimote[i]; delete m_wiimote[i];
m_wiimote[i] = NULL; m_wiimote[i] = NULL;
} }
if (m_video) delete m_dsp;
m_video->Shutdown(); m_dsp = NULL;
delete m_video; delete m_video;
m_video = NULL; m_video = NULL;
if (m_dsp)
m_dsp->Shutdown();
delete m_dsp;
m_dsp = NULL;
} }
// Supporting functions // Supporting functions

View File

@ -49,10 +49,6 @@ void AOSound::SoundLoop()
soundCriticalSection->Leave(); soundCriticalSection->Leave();
soundSyncEvent->Wait(); soundSyncEvent->Wait();
} }
ao_close(device);
device = NULL;
ao_shutdown();
} }
void *soundThread(void *args) { void *soundThread(void *args) {
@ -83,6 +79,10 @@ void AOSound::Stop()
delete soundCriticalSection; delete soundCriticalSection;
delete thread; delete thread;
delete soundSyncEvent; delete soundSyncEvent;
ao_close(device);
device = NULL;
ao_shutdown();
} }
#endif #endif

View File

@ -23,7 +23,7 @@
#include "ConfigDlg.h" #include "ConfigDlg.h"
#include "Debugger/File.h" // For file logging #include "Debugger/File.h" // For file logging
#include "Debugger/Debugger.h" // For the CDebugger class #include "Debugger/Debugger.h" // For the CDebugger class
CDebugger* m_frame; CDebugger* m_frame = NULL;
#endif #endif
#include "ConsoleWindow.h" // Common: For the Windows console #include "ConsoleWindow.h" // Common: For the Windows console