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) lock (_homeMenu.Lock)
{ {
_homeMenu.AppletState.PushUnorderedMessage(message);
if (message == AppletMessage.DetectShortPressingHomeButton) if (message == AppletMessage.DetectShortPressingHomeButton)
{ {
foreach (var applet in _applets.Values) foreach (var applet in _applets.Values)
{ {
if (applet != _homeMenu) if (applet != _homeMenu && _foregroundRequestedApplet==applet)
{ {
applet.ProcessHandle.SetActivity(true); 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); Logger.Stub?.PrintStub(LogClass.ServiceAm);
context.Device.System.WindowSystem.RequestApplicationToGetForeground(_pid); context.Device.System.WindowSystem.RequestApplicationToGetForeground(_pid);
context.Device.System.GetAppletState(_pid).SetFocusForce(true);
return ResultCode.Success; return ResultCode.Success;
} }

View File

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