Revert "Join the emu thread in Core::Stop. Get rid of Core::Shutdown which did that before."

This reverts commit ba664b3293.

Added documentation to Core::Shutdown() to prevent breaking changes.
This commit is contained in:
Jules Blok 2015-06-06 14:52:09 +02:00
parent 40162fdfc1
commit b6c4d5792b
5 changed files with 16 additions and 2 deletions

View File

@ -273,8 +273,6 @@ void Stop() // - Hammertime!
g_video_backend->Video_ExitLoop(); g_video_backend->Video_ExitLoop();
} }
if (s_emu_thread.joinable())
s_emu_thread.join();
} }
static void DeclareAsCPUThread() static void DeclareAsCPUThread()
@ -829,6 +827,18 @@ void UpdateTitle()
Host_UpdateTitle(SMessage); Host_UpdateTitle(SMessage);
} }
void Shutdown()
{
// During shutdown DXGI expects us to handle some messages on the UI thread.
// Therefore we can't immediately block and wait for the emu thread to shut
// down, so we join the emu thread as late as possible when the UI has already
// shut down.
// For more info read "DirectX Graphics Infrastructure (DXGI): Best Practices"
// on MSDN.
if (s_emu_thread.joinable())
s_emu_thread.join();
}
void SetOnStoppedCallback(StoppedCallbackFunc callback) void SetOnStoppedCallback(StoppedCallbackFunc callback)
{ {
s_on_stopped_callback = callback; s_on_stopped_callback = callback;

View File

@ -39,6 +39,7 @@ enum EState
bool Init(); bool Init();
void Stop(); void Stop();
void Shutdown();
std::string StopMessage(bool, const std::string&); std::string StopMessage(bool, const std::string&);

View File

@ -370,6 +370,7 @@ void DolphinApp::OnEndSession(wxCloseEvent& event)
int DolphinApp::OnExit() int DolphinApp::OnExit()
{ {
Core::Shutdown();
UICommon::Shutdown(); UICommon::Shutdown();
delete m_locale; delete m_locale;

View File

@ -627,6 +627,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv *
updateMainFrameEvent.Wait(); updateMainFrameEvent.Wait();
} }
Core::Shutdown();
UICommon::Shutdown(); UICommon::Shutdown();
ANativeWindow_release(surf); ANativeWindow_release(surf);

View File

@ -358,6 +358,7 @@ int main(int argc, char* argv[])
while (PowerPC::GetState() != PowerPC::CPU_POWERDOWN) while (PowerPC::GetState() != PowerPC::CPU_POWERDOWN)
updateMainFrameEvent.Wait(); updateMainFrameEvent.Wait();
Core::Shutdown();
platform->Shutdown(); platform->Shutdown();
UICommon::Shutdown(); UICommon::Shutdown();