Fix SystemPathToSwitchPath platform issues and make sure to delete temporary NRO after sessions dispose (#293)
This commit is contained in:
parent
8b67297711
commit
c9fc52edb6
@ -96,7 +96,6 @@ namespace Ryujinx.HLE.OsHle
|
||||
|
||||
if (IsNro && (SwitchFilePath == null || !SwitchFilePath.StartsWith("sdmc:/")))
|
||||
{
|
||||
// TODO: avoid copying the file if we are already inside a sdmc directory
|
||||
string SwitchPath = $"sdmc:/switch/{Name}{Homebrew.TemporaryNroSuffix}";
|
||||
string TempPath = Ns.VFs.SwitchPathToSystemPath(SwitchPath);
|
||||
|
||||
|
@ -403,11 +403,6 @@ namespace Ryujinx.HLE.OsHle
|
||||
{
|
||||
if (Disposing && !Disposed)
|
||||
{
|
||||
if (NeedsHbAbi && Executables[0].FilePath.EndsWith(Homebrew.TemporaryNroSuffix))
|
||||
{
|
||||
File.Delete(Executables[0].FilePath);
|
||||
}
|
||||
|
||||
//If there is still some thread running, disposing the objects is not
|
||||
//safe as the thread may try to access those resources. Instead, we set
|
||||
//the flag to have the Process disposed when all threads finishes.
|
||||
@ -431,6 +426,11 @@ namespace Ryujinx.HLE.OsHle
|
||||
}
|
||||
}
|
||||
|
||||
if (NeedsHbAbi && Executables.Count > 0 && Executables[0].FilePath.EndsWith(Homebrew.TemporaryNroSuffix))
|
||||
{
|
||||
File.Delete(Executables[0].FilePath);
|
||||
}
|
||||
|
||||
INvDrvServices.UnloadProcess(this);
|
||||
|
||||
AppletState.Dispose();
|
||||
|
@ -57,11 +57,11 @@ namespace Ryujinx.HLE
|
||||
|
||||
public string SystemPathToSwitchPath(string SystemPath)
|
||||
{
|
||||
string BaseSystemPath = GetBasePath() + "/";
|
||||
string BaseSystemPath = GetBasePath() + Path.DirectorySeparatorChar;
|
||||
if (SystemPath.StartsWith(BaseSystemPath))
|
||||
{
|
||||
string RawPath = SystemPath.Replace(BaseSystemPath, "");
|
||||
int FirstSeparatorOffset = RawPath.IndexOf('/');
|
||||
int FirstSeparatorOffset = RawPath.IndexOf(Path.DirectorySeparatorChar);
|
||||
if (FirstSeparatorOffset == -1)
|
||||
{
|
||||
return $"{RawPath}:/";
|
||||
|
Loading…
Reference in New Issue
Block a user