Skip to content
Permalink
Browse files
Merge pull request #9682 from JosJuice/fix-wii-netplay
IOS: Don't let Kernel initialize WiiRoot if already initialized
  • Loading branch information
JMC47 committed May 2, 2021
2 parents 9e92d6d + 3397f49 commit a8c40eb
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
@@ -256,8 +256,11 @@ Kernel::Kernel()
// 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.
ASSERT(GetIOS() == nullptr);
Core::InitializeWiiRoot(false);
m_is_responsible_for_nand_root = true;

m_is_responsible_for_nand_root = !Core::WiiRootIsInitialized();
if (m_is_responsible_for_nand_root)
Core::InitializeWiiRoot(false);

AddCoreDevices();
}

@@ -33,6 +33,7 @@ namespace Core
namespace FS = IOS::HLE::FS;

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)
{
@@ -170,6 +171,8 @@ static void InitializeDeterministicWiiSaves(FS::FileSystem* session_fs)

void InitializeWiiRoot(bool use_temporary)
{
ASSERT(!s_wii_root_initialized);

if (use_temporary)
{
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));
}

s_wii_root_initialized = true;
}

void ShutdownWiiRoot()
@@ -207,6 +212,13 @@ void ShutdownWiiRoot()
File::DeleteDirRecursively(s_temp_wii_root);
s_temp_wii_root.clear();
}

s_wii_root_initialized = false;
}

bool WiiRootIsInitialized()
{
return s_wii_root_initialized;
}

bool WiiRootIsTemporary()
@@ -15,6 +15,7 @@ enum class RestoreReason
void InitializeWiiRoot(bool use_temporary);
void ShutdownWiiRoot();

bool WiiRootIsInitialized();
bool WiiRootIsTemporary();

void BackupWiiSettings();

0 comments on commit a8c40eb

Please sign in to comment.