mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
Merge pull request #2538 from Armada651/thread-revert
Revert "Join the emu thread in Core::Stop. Get rid of Core::Shutdown which did that before."
This commit is contained in:
commit
fbd5bb815c
@ -162,7 +162,7 @@ void DisplayMessage(const std::string& message, int time_in_ms)
|
||||
|
||||
bool IsRunning()
|
||||
{
|
||||
return (GetState() != CORE_UNINITIALIZED) || s_hardware_initialized;
|
||||
return (GetState() != CORE_UNINITIALIZED || s_hardware_initialized) && !s_is_stopping;
|
||||
}
|
||||
|
||||
bool IsRunningAndStarted()
|
||||
@ -273,8 +273,6 @@ void Stop() // - Hammertime!
|
||||
|
||||
g_video_backend->Video_ExitLoop();
|
||||
}
|
||||
if (s_emu_thread.joinable())
|
||||
s_emu_thread.join();
|
||||
}
|
||||
|
||||
static void DeclareAsCPUThread()
|
||||
@ -829,6 +827,18 @@ void UpdateTitle()
|
||||
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)
|
||||
{
|
||||
s_on_stopped_callback = callback;
|
||||
|
@ -39,6 +39,7 @@ enum EState
|
||||
|
||||
bool Init();
|
||||
void Stop();
|
||||
void Shutdown();
|
||||
|
||||
std::string StopMessage(bool, const std::string&);
|
||||
|
||||
|
@ -370,6 +370,7 @@ void DolphinApp::OnEndSession(wxCloseEvent& event)
|
||||
|
||||
int DolphinApp::OnExit()
|
||||
{
|
||||
Core::Shutdown();
|
||||
UICommon::Shutdown();
|
||||
|
||||
delete m_locale;
|
||||
|
@ -627,6 +627,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_Run(JNIEnv *
|
||||
updateMainFrameEvent.Wait();
|
||||
}
|
||||
|
||||
Core::Shutdown();
|
||||
UICommon::Shutdown();
|
||||
ANativeWindow_release(surf);
|
||||
|
||||
|
@ -358,6 +358,7 @@ int main(int argc, char* argv[])
|
||||
while (PowerPC::GetState() != PowerPC::CPU_POWERDOWN)
|
||||
updateMainFrameEvent.Wait();
|
||||
|
||||
Core::Shutdown();
|
||||
platform->Shutdown();
|
||||
UICommon::Shutdown();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user