summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorLeo Lam <leolino.lam@gmail.com>2017-06-12 23:41:45 +0200
committerGitHub <noreply@github.com>2017-06-12 23:41:45 +0200
commit3e1a650a3f85e73bf7e1f5cd2fceca4fe6d75465 (patch)
tree2ae43b3c1ea0ca339f54a4a7dc9b2b2d695ab060 /Source
parent9b8feb8e607658dbe6c9ad7d285a8962e7ec49b8 (diff)
parent91bcd756ffe060319cb858572dbe118657c2ddfd (diff)
Merge pull request #5591 from leoetlino/wii-fix
Core: Misc WiiRoot fixes
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Core.cpp22
-rw-r--r--Source/Core/Core/WiiRoot.cpp12
2 files changed, 14 insertions, 20 deletions
diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp
index 760d16d95d..75b36ef0fd 100644
--- a/Source/Core/Core/Core.cpp
+++ b/Source/Core/Core/Core.cpp
@@ -481,6 +481,16 @@ static void EmuThread(std::unique_ptr<BootParameters> boot)
INFO_LOG(CONSOLE, "%s", StopMessage(false, "Shutting down HW").c_str());
HW::Shutdown();
INFO_LOG(CONSOLE, "%s", StopMessage(false, "HW shutdown").c_str());
+
+ // Clear on screen messages that haven't expired
+ OSD::ClearMessages();
+
+ // The config must be restored only after the whole HW has shut down,
+ // not when it is still running.
+ BootManager::RestoreConfig();
+
+ PatchEngine::Shutdown();
+ HLE::Clear();
}};
if (!g_video_backend->Initialize(s_window_handle))
@@ -638,13 +648,6 @@ static void EmuThread(std::unique_ptr<BootParameters> boot)
if (core_parameter.bCPUThread)
g_video_backend->Video_Cleanup();
- // Clear on screen messages that haven't expired
- OSD::ClearMessages();
-
- BootManager::RestoreConfig();
-
- PatchEngine::Shutdown();
- HLE::Clear();
// If we shut down normally, the stop message does not need to be triggered.
stop_message_guard.Dismiss();
}
@@ -961,7 +964,10 @@ void UpdateWantDeterminism(bool initial)
// We need to clear the cache because some parts of the JIT depend on want_determinism, e.g. use
// of FMA.
JitInterface::ClearCache();
- Core::InitializeWiiRoot(s_wants_determinism);
+
+ // Don't call InitializeWiiRoot during boot, because IOS already does it.
+ if (!initial)
+ Core::InitializeWiiRoot(s_wants_determinism);
Core::PauseAndLock(false, was_unpaused);
}
diff --git a/Source/Core/Core/WiiRoot.cpp b/Source/Core/Core/WiiRoot.cpp
index 995e633522..7a2f5104b3 100644
--- a/Source/Core/Core/WiiRoot.cpp
+++ b/Source/Core/Core/WiiRoot.cpp
@@ -16,10 +16,6 @@
#include "Core/Movie.h"
#include "Core/NetPlayClient.h"
-#ifdef _WIN32
-#include <Windows.h>
-#endif
-
namespace Core
{
static std::string s_temp_wii_root;
@@ -56,8 +52,6 @@ static void InitializeDeterministicWiiSaves()
void InitializeWiiRoot(bool use_temporary)
{
- ShutdownWiiRoot();
-
if (use_temporary)
{
s_temp_wii_root = File::CreateTempDir();
@@ -69,12 +63,6 @@ void InitializeWiiRoot(bool use_temporary)
File::CopyDir(File::GetSysDirectory() + WII_USER_DIR, s_temp_wii_root);
WARN_LOG(IOS_FILEIO, "Using temporary directory %s for minimal Wii FS",
s_temp_wii_root.c_str());
- static bool s_registered;
- if (!s_registered)
- {
- s_registered = true;
- atexit(ShutdownWiiRoot);
- }
File::SetUserPath(D_SESSION_WIIROOT_IDX, s_temp_wii_root);
// Generate a SYSCONF with default settings for the temporary Wii NAND.
SysConf sysconf{Common::FromWhichRoot::FROM_SESSION_ROOT};