diff --git a/src/Ryujinx.HLE/HOS/Applets/WindowSystem.cs b/src/Ryujinx.HLE/HOS/Applets/WindowSystem.cs index 2d8690314..71e50247a 100644 --- a/src/Ryujinx.HLE/HOS/Applets/WindowSystem.cs +++ b/src/Ryujinx.HLE/HOS/Applets/WindowSystem.cs @@ -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); } } diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IHomeMenuFunctions.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IHomeMenuFunctions.cs index 0cc077f8d..0db3684d6 100644 --- a/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IHomeMenuFunctions.cs +++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/SystemAppletProxy/IHomeMenuFunctions.cs @@ -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; } diff --git a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs index cedd11ae9..8a52e0ca3 100644 --- a/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs +++ b/src/Ryujinx.HLE/Loaders/Processes/ProcessLoaderHelper.cs @@ -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(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(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);