Fix SystemPathToSwitchPath platform issues and make sure to delete temporary NRO after sessions dispose (#293)
This commit is contained in:
parent
8b67297711
commit
c9fc52edb6
3 changed files with 7 additions and 8 deletions
|
@ -96,7 +96,6 @@ namespace Ryujinx.HLE.OsHle
|
||||||
|
|
||||||
if (IsNro && (SwitchFilePath == null || !SwitchFilePath.StartsWith("sdmc:/")))
|
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 SwitchPath = $"sdmc:/switch/{Name}{Homebrew.TemporaryNroSuffix}";
|
||||||
string TempPath = Ns.VFs.SwitchPathToSystemPath(SwitchPath);
|
string TempPath = Ns.VFs.SwitchPathToSystemPath(SwitchPath);
|
||||||
|
|
||||||
|
|
|
@ -403,11 +403,6 @@ namespace Ryujinx.HLE.OsHle
|
||||||
{
|
{
|
||||||
if (Disposing && !Disposed)
|
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
|
//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
|
//safe as the thread may try to access those resources. Instead, we set
|
||||||
//the flag to have the Process disposed when all threads finishes.
|
//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);
|
INvDrvServices.UnloadProcess(this);
|
||||||
|
|
||||||
AppletState.Dispose();
|
AppletState.Dispose();
|
||||||
|
|
|
@ -57,11 +57,11 @@ namespace Ryujinx.HLE
|
||||||
|
|
||||||
public string SystemPathToSwitchPath(string SystemPath)
|
public string SystemPathToSwitchPath(string SystemPath)
|
||||||
{
|
{
|
||||||
string BaseSystemPath = GetBasePath() + "/";
|
string BaseSystemPath = GetBasePath() + Path.DirectorySeparatorChar;
|
||||||
if (SystemPath.StartsWith(BaseSystemPath))
|
if (SystemPath.StartsWith(BaseSystemPath))
|
||||||
{
|
{
|
||||||
string RawPath = SystemPath.Replace(BaseSystemPath, "");
|
string RawPath = SystemPath.Replace(BaseSystemPath, "");
|
||||||
int FirstSeparatorOffset = RawPath.IndexOf('/');
|
int FirstSeparatorOffset = RawPath.IndexOf(Path.DirectorySeparatorChar);
|
||||||
if (FirstSeparatorOffset == -1)
|
if (FirstSeparatorOffset == -1)
|
||||||
{
|
{
|
||||||
return $"{RawPath}:/";
|
return $"{RawPath}:/";
|
||||||
|
|
Reference in a new issue