Threads and Stop: How about this? A timeout only for the shutdown process? That way the shutdown can either work anyway, or crash, which is simpler than having to open the Task Manager and manually end the deadlocked process.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2401 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
b739dd3817
commit
5f4d304ebc
|
@ -87,11 +87,11 @@ Thread::~Thread()
|
|||
WaitForDeath();
|
||||
}
|
||||
|
||||
void Thread::WaitForDeath()
|
||||
void Thread::WaitForDeath(const int _Wait)
|
||||
{
|
||||
if (m_hThread)
|
||||
{
|
||||
WaitForSingleObject(m_hThread, INFINITE);
|
||||
WaitForSingleObject(m_hThread, _Wait);
|
||||
CloseHandle(m_hThread);
|
||||
m_hThread = NULL;
|
||||
}
|
||||
|
|
|
@ -74,9 +74,9 @@ public:
|
|||
|
||||
void SetAffinity(int mask);
|
||||
static void SetCurrentThreadAffinity(int mask);
|
||||
void WaitForDeath(const int _Wait = INFINITE);
|
||||
|
||||
private:
|
||||
void WaitForDeath();
|
||||
|
||||
#ifdef _WIN32
|
||||
HANDLE m_hThread;
|
||||
|
|
|
@ -302,6 +302,7 @@ void Stop()
|
|||
if (GetParent((HWND)g_pWindowHandle) == NULL)
|
||||
#endif
|
||||
#ifndef SETUP_TIMER_WAITING // This is moved
|
||||
g_EmuThread->WaitForDeath(5000);
|
||||
delete g_EmuThread; // Wait for emuthread to close.
|
||||
g_EmuThread = 0;
|
||||
#endif
|
||||
|
@ -574,6 +575,7 @@ void EmuThreadEnd()
|
|||
if (cpuThread)
|
||||
{
|
||||
// There is a CPU thread - join it.
|
||||
cpuThread->WaitForDeath(5000);
|
||||
delete cpuThread;
|
||||
// Returns after game exited
|
||||
cpuThread = NULL;
|
||||
|
|
Loading…
Reference in New Issue