mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-30 01:25:51 +00:00
CDSubChannelReplacement: Clear map on reload
Fixes one PBP disc's SBI from leaking into others.
This commit is contained in:
parent
cc84952fdc
commit
cf760bbe42
|
@ -743,12 +743,16 @@ bool CDImagePBP::OpenDisc(u32 index, Error* error)
|
||||||
|
|
||||||
if (m_disc_offsets.size() > 1)
|
if (m_disc_offsets.size() > 1)
|
||||||
{
|
{
|
||||||
const std::string offset_path = fmt::format("{}_{}.pbp", Path::StripExtension(m_filename), index + 1);
|
// Gross. Have to use the SBI suffix here, otherwise Android won't resolve content URIs...
|
||||||
|
// Which means that LSD won't be usable with PBP on Android. Oh well.
|
||||||
|
const std::string display_name = FileSystem::GetDisplayNameFromPath(m_filename);
|
||||||
|
const std::string offset_path =
|
||||||
|
Path::BuildRelativePath(m_filename, fmt::format("{}_{}.sbi", Path::StripExtension(display_name), index + 1));
|
||||||
m_sbi.LoadFromImagePath(offset_path);
|
m_sbi.LoadFromImagePath(offset_path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_sbi.LoadFromImagePath(Path::ReplaceExtension(m_filename, "sbi"));
|
m_sbi.LoadFromImagePath(m_filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_current_disc = index;
|
m_current_disc = index;
|
||||||
|
|
|
@ -61,6 +61,8 @@ bool CDSubChannelReplacement::LoadSBI(const std::string& path)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_replacement_subq.clear();
|
||||||
|
|
||||||
SBIFileEntry entry;
|
SBIFileEntry entry;
|
||||||
while (std::fread(&entry, sizeof(entry), 1, fp.get()) == 1)
|
while (std::fread(&entry, sizeof(entry), 1, fp.get()) == 1)
|
||||||
{
|
{
|
||||||
|
@ -101,6 +103,8 @@ bool CDSubChannelReplacement::LoadLSD(const std::string& path)
|
||||||
if (!fp)
|
if (!fp)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
m_replacement_subq.clear();
|
||||||
|
|
||||||
LSDFileEntry entry;
|
LSDFileEntry entry;
|
||||||
while (std::fread(&entry, sizeof(entry), 1, fp.get()) == 1)
|
while (std::fread(&entry, sizeof(entry), 1, fp.get()) == 1)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue