fix: small changes and fixes for applet switching

This commit is contained in:
Jacobwasbeast 2025-02-11 09:38:48 -06:00
parent 3b568b61ba
commit d7cdb5584c
3 changed files with 15 additions and 11 deletions

View File

@ -321,17 +321,17 @@ namespace Ryujinx.HLE.HOS.Applets
{
lock (_homeMenu.Lock)
{
_homeMenu.AppletState.PushUnorderedMessage(message);
if (message == AppletMessage.DetectShortPressingHomeButton)
{
foreach (var applet in _applets.Values)
{
if (applet != _homeMenu)
if (applet != _homeMenu && _foregroundRequestedApplet==applet)
{
applet.ProcessHandle.SetActivity(true);
}
}
}
_homeMenu.AppletState.PushUnorderedMessage(message);
}
}

View File

@ -22,6 +22,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
{
Logger.Stub?.PrintStub(LogClass.ServiceAm);
context.Device.System.WindowSystem.RequestApplicationToGetForeground(_pid);
context.Device.System.GetAppletState(_pid).SetFocusForce(true);
return ResultCode.Success;
}

View File

@ -442,16 +442,19 @@ namespace Ryujinx.HLE.Loaders.Processes
// Register everything in arp service.
device.System.ServiceTable.ArpWriter.AcquireRegistrar(out IRegistrar registrar);
registrar.SetApplicationControlProperty(MemoryMarshal.Cast<byte, Horizon.Sdk.Ns.ApplicationControlProperty>(applicationControlProperties.ByteSpan)[0]);
// TODO: Handle Version and StorageId when it will be needed.
registrar.SetApplicationLaunchProperty(new ApplicationLaunchProperty()
if (registrar != null)
{
ApplicationId = new Horizon.Sdk.Ncm.ApplicationId(programId),
Version = 0x00,
Storage = Horizon.Sdk.Ncm.StorageId.BuiltInUser,
PatchStorage = Horizon.Sdk.Ncm.StorageId.None,
ApplicationKind = ApplicationKind.Application,
});
registrar.SetApplicationControlProperty(MemoryMarshal.Cast<byte, Horizon.Sdk.Ns.ApplicationControlProperty>(applicationControlProperties.ByteSpan)[0]);
// TODO: Handle Version and StorageId when it will be needed.
registrar.SetApplicationLaunchProperty(new ApplicationLaunchProperty()
{
ApplicationId = new Horizon.Sdk.Ncm.ApplicationId(programId),
Version = 0x00,
Storage = Horizon.Sdk.Ncm.StorageId.BuiltInUser,
PatchStorage = Horizon.Sdk.Ncm.StorageId.None,
ApplicationKind = ApplicationKind.Application,
});
}
device.System.ServiceTable.ArpReader.GetApplicationInstanceId(out ulong applicationInstanceId, process.Pid);
device.System.ServiceTable.ArpWriter.AcquireApplicationProcessPropertyUpdater(out IUpdater updater, applicationInstanceId);