Always use configured root when installing WAD

This prevents Dolphin from writing to /sys/uid.sys (on the host; root
partition) when installing a WAD before starting emulation, because
the session root is not initialized at that moment.

Incidentally, this also gets rid of a singleton.
This commit is contained in:
Léo Lam
2017-02-08 21:37:12 +01:00
parent 96e83b5d54
commit 7a1f676ef4
4 changed files with 10 additions and 28 deletions

View File

@ -398,16 +398,11 @@ void CNANDContentLoader::RemoveTitle() const
}
}
cUIDsys::cUIDsys()
{
UpdateLocation();
}
void cUIDsys::UpdateLocation()
cUIDsys::cUIDsys(Common::FromWhichRoot root)
{
m_Elements.clear();
m_LastUID = 0x00001000;
m_UidSys = File::GetUserPath(D_SESSION_WIIROOT_IDX) + "/sys/uid.sys";
m_UidSys = Common::RootUserPath(root) + "/sys/uid.sys";
File::IOFile pFile(m_UidSys, "rb");
SElement Element;
@ -430,10 +425,6 @@ void cUIDsys::UpdateLocation()
}
}
cUIDsys::~cUIDsys()
{
}
u32 cUIDsys::GetUIDFromTitle(u64 title_id)
{
for (auto& Element : m_Elements)
@ -541,7 +532,8 @@ u64 CNANDContentManager::Install_WiiWAD(const std::string& filename)
return 0;
}
cUIDsys::AccessInstance().AddTitle(title_id);
cUIDsys uid_sys{Common::FromWhichRoot::FROM_CONFIGURED_ROOT};
uid_sys.AddTitle(title_id);
ClearCache();