Merge pull request #9682 from JosJuice/fix-wii-netplay
IOS: Don't let Kernel initialize WiiRoot if already initialized
This commit is contained in:
commit
a8c40eb510
|
@ -256,8 +256,11 @@ Kernel::Kernel()
|
||||||
// Until the Wii root and NAND path stuff is entirely managed by IOS and made non-static,
|
// Until the Wii root and NAND path stuff is entirely managed by IOS and made non-static,
|
||||||
// using more than one IOS instance at a time is not supported.
|
// using more than one IOS instance at a time is not supported.
|
||||||
ASSERT(GetIOS() == nullptr);
|
ASSERT(GetIOS() == nullptr);
|
||||||
|
|
||||||
|
m_is_responsible_for_nand_root = !Core::WiiRootIsInitialized();
|
||||||
|
if (m_is_responsible_for_nand_root)
|
||||||
Core::InitializeWiiRoot(false);
|
Core::InitializeWiiRoot(false);
|
||||||
m_is_responsible_for_nand_root = true;
|
|
||||||
AddCoreDevices();
|
AddCoreDevices();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ namespace Core
|
||||||
namespace FS = IOS::HLE::FS;
|
namespace FS = IOS::HLE::FS;
|
||||||
|
|
||||||
static std::string s_temp_wii_root;
|
static std::string s_temp_wii_root;
|
||||||
|
static bool s_wii_root_initialized = false;
|
||||||
|
|
||||||
static bool CopyBackupFile(const std::string& path_from, const std::string& path_to)
|
static bool CopyBackupFile(const std::string& path_from, const std::string& path_to)
|
||||||
{
|
{
|
||||||
|
@ -170,6 +171,8 @@ static void InitializeDeterministicWiiSaves(FS::FileSystem* session_fs)
|
||||||
|
|
||||||
void InitializeWiiRoot(bool use_temporary)
|
void InitializeWiiRoot(bool use_temporary)
|
||||||
{
|
{
|
||||||
|
ASSERT(!s_wii_root_initialized);
|
||||||
|
|
||||||
if (use_temporary)
|
if (use_temporary)
|
||||||
{
|
{
|
||||||
s_temp_wii_root = File::GetUserPath(D_USER_IDX) + "WiiSession" DIR_SEP;
|
s_temp_wii_root = File::GetUserPath(D_USER_IDX) + "WiiSession" DIR_SEP;
|
||||||
|
@ -198,6 +201,8 @@ void InitializeWiiRoot(bool use_temporary)
|
||||||
{
|
{
|
||||||
File::SetUserPath(D_SESSION_WIIROOT_IDX, File::GetUserPath(D_WIIROOT_IDX));
|
File::SetUserPath(D_SESSION_WIIROOT_IDX, File::GetUserPath(D_WIIROOT_IDX));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s_wii_root_initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShutdownWiiRoot()
|
void ShutdownWiiRoot()
|
||||||
|
@ -207,6 +212,13 @@ void ShutdownWiiRoot()
|
||||||
File::DeleteDirRecursively(s_temp_wii_root);
|
File::DeleteDirRecursively(s_temp_wii_root);
|
||||||
s_temp_wii_root.clear();
|
s_temp_wii_root.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s_wii_root_initialized = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool WiiRootIsInitialized()
|
||||||
|
{
|
||||||
|
return s_wii_root_initialized;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool WiiRootIsTemporary()
|
bool WiiRootIsTemporary()
|
||||||
|
|
|
@ -15,6 +15,7 @@ enum class RestoreReason
|
||||||
void InitializeWiiRoot(bool use_temporary);
|
void InitializeWiiRoot(bool use_temporary);
|
||||||
void ShutdownWiiRoot();
|
void ShutdownWiiRoot();
|
||||||
|
|
||||||
|
bool WiiRootIsInitialized();
|
||||||
bool WiiRootIsTemporary();
|
bool WiiRootIsTemporary();
|
||||||
|
|
||||||
void BackupWiiSettings();
|
void BackupWiiSettings();
|
||||||
|
|
Loading…
Reference in New Issue