From c674e828773bbcabbf2960fd726a9f2f25ea0620 Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 4 Jun 2025 14:41:18 +0200 Subject: [PATCH 1/4] test 1: add an event handle --- .../ApplicationProxy/IApplicationFunctions.cs | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs index 8648b0642..caf1c3a4c 100644 --- a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs +++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs @@ -31,11 +31,13 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati private readonly KEvent _friendInvitationStorageChannelEvent; private readonly KEvent _notificationStorageChannelEvent; private readonly KEvent _healthWarningDisappearedSystemEvent; + private readonly KEvent _unknownEvent; private int _gpuErrorDetectedSystemEventHandle; private int _friendInvitationStorageChannelEventHandle; private int _notificationStorageChannelEventHandle; private int _healthWarningDisappearedSystemEventHandle; + private int _unknownEventHandle; private bool _gamePlayRecordingState; @@ -50,6 +52,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati _friendInvitationStorageChannelEvent = new KEvent(system.KernelContext); _notificationStorageChannelEvent = new KEvent(system.KernelContext); _healthWarningDisappearedSystemEvent = new KEvent(system.KernelContext); + _unknownEvent = new KEvent(system.KernelContext); _horizon = system.LibHacHorizonManager.AmClient; } @@ -647,6 +650,25 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati return ResultCode.Success; } + + [CommandCmif(210)] + // GetUnknownEvent() -> handle + public ResultCode GetUnknownEvent(ServiceCtx context) + { + if (_unknownEventHandle == 0) + { + if (context.Process.HandleTable.GenerateHandle(_unknownEvent.ReadableEvent, out _unknownEventHandle) != Result.Success) + { + throw new InvalidOperationException("Out of handles!"); + } + } + + context.Response.HandleDesc = IpcHandleDesc.MakeCopy(_unknownEventHandle); + + Logger.Stub?.PrintStub(LogClass.ServiceAm); + + return ResultCode.Success; + } [CommandCmif(1001)] // 10.0.0+ // PrepareForJit() From 65baa5a04cf2434356ca13e255b593453b1bc05b Mon Sep 17 00:00:00 2001 From: LotP1 <68976644+LotP1@users.noreply.github.com> Date: Wed, 4 Jun 2025 20:52:44 +0200 Subject: [PATCH 2/4] remove stub --- .../ApplicationProxy/IApplicationFunctions.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs index caf1c3a4c..eaf3a73bb 100644 --- a/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs +++ b/src/Ryujinx.HLE/HOS/Services/Am/AppletOE/ApplicationProxyService/ApplicationProxy/IApplicationFunctions.cs @@ -665,8 +665,6 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati context.Response.HandleDesc = IpcHandleDesc.MakeCopy(_unknownEventHandle); - Logger.Stub?.PrintStub(LogClass.ServiceAm); - return ResultCode.Success; } From d3208a4c44c6fa9e47f21965c6f5173d6f3c5b21 Mon Sep 17 00:00:00 2001 From: GreemDev Date: Fri, 20 Jun 2025 23:02:39 -0500 Subject: [PATCH 3/4] UI: Don't show total play time if there is none. --- src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs index 5e7df4d62..4ca21e788 100644 --- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs +++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs @@ -310,10 +310,15 @@ namespace Ryujinx.Ava.UI.ViewModels private void TotalTimePlayed_Recalculated(Optional ts) { - ShowTotalTimePlayed = ts.HasValue; - if (ts.HasValue) - LocaleManager.Instance.SetDynamicValues(LocaleKeys.GameListLabelTotalTimePlayed, ValueFormatUtils.FormatTimeSpan(ts.Value)); + { + var formattedPlayTime = ValueFormatUtils.FormatTimeSpan(ts.Value); + LocaleManager.Instance.SetDynamicValues(LocaleKeys.GameListLabelTotalTimePlayed, formattedPlayTime); + ShowTotalTimePlayed = formattedPlayTime != string.Empty; + return; + } + + ShowTotalTimePlayed = ts.HasValue; } public bool ShowTotalTimePlayed @@ -334,7 +339,6 @@ namespace Ryujinx.Ava.UI.ViewModels _listSelectedApplication = value; if (_listSelectedApplication != null && ListAppContextMenu == null) - ListAppContextMenu = new ApplicationContextMenu(); else if (_listSelectedApplication == null && ListAppContextMenu != null) ListAppContextMenu = null!; From 74a9b94227ad80e1cea6e4aa2be14ae8a5c6c922 Mon Sep 17 00:00:00 2001 From: GreemDev Date: Fri, 20 Jun 2025 23:06:16 -0500 Subject: [PATCH 4/4] UI: Properly space total play time separator when loading bar is shown. --- src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml index b649ae767..b03736681 100644 --- a/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml +++ b/src/Ryujinx/UI/Views/Main/MainStatusBarView.axaml @@ -64,6 +64,7 @@ MinWidth="200" Height="6" VerticalAlignment="Center" + Margin="0, 0, 5, 0" Foreground="{DynamicResource SystemAccentColorLight2}" IsVisible="{Binding StatusBarVisible}" Maximum="{Binding StatusBarProgressMaximum}"