From 380b95bc59e7dc419f89df951cdc086e792cb0ff Mon Sep 17 00:00:00 2001 From: Caian Benedicto Date: Tue, 12 Oct 2021 16:54:21 -0300 Subject: Inline software keyboard without input pop up dialog (#2180) * Initial implementation * Refactor dynamic text input keys out to facilitate configuration via UI * Fix code styling * Add per applet indirect layer handles * Remove static functions from SoftwareKeyboardRenderer * Remove inline keyboard reset delay * Remove inline keyboard V2 responses * Add inline keyboard soft-lock recovering * Add comments * Forward accept and cancel key names to the keyboard and add soft-lock prevention line * Add dummy window to handle paste events * Rework inline keyboard state machine and graphics * Implement IHostUiHandler interfaces on headless WindowBase class * Add inline keyboard assets * Fix coding style * Fix coding style * Change mode cycling shortcut to F6 * Fix invalid calc size error in games using extended calc * Remove unnecessary namespaces --- .../LibraryAppletCreator/ILibraryAppletAccessor.cs | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator') diff --git a/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs b/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs index 2deb830e..405806c4 100644 --- a/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs +++ b/Ryujinx.HLE/HOS/Services/Am/AppletAE/AllSystemAppletProxiesService/LibraryAppletCreator/ILibraryAppletAccessor.cs @@ -25,6 +25,8 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Lib private int _normalOutDataEventHandle; private int _interactiveOutDataEventHandle; + private int _indirectLayerHandle; + public ILibraryAppletAccessor(AppletId appletId, Horizon system) { _kernelContext = system.KernelContext; @@ -222,21 +224,11 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Lib // GetIndirectLayerConsumerHandle() -> u64 indirect_layer_consumer_handle public ResultCode GetIndirectLayerConsumerHandle(ServiceCtx context) { - /* - if (indirectLayerConsumer == null) - { - return ResultCode.ObjectInvalid; - } - */ - - // TODO: Official sw uses this during LibraryApplet creation when LibraryAppletMode is 0x3. - // Since we don't support IndirectLayer and the handle couldn't be 0, it's fine to return 1. + Horizon horizon = _kernelContext.Device.System; - ulong indirectLayerConsumerHandle = 1; + _indirectLayerHandle = horizon.AppletState.IndirectLayerHandles.Add(_applet); - context.ResponseData.Write(indirectLayerConsumerHandle); - - Logger.Stub?.PrintStub(LogClass.ServiceAm, new { indirectLayerConsumerHandle }); + context.ResponseData.Write((ulong)_indirectLayerHandle); return ResultCode.Success; } @@ -260,6 +252,10 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Lib _kernelContext.Syscall.CloseHandle(_interactiveOutDataEventHandle); } } + + Horizon horizon = _kernelContext.Device.System; + + horizon.AppletState.IndirectLayerHandles.Delete(_indirectLayerHandle); } } } -- cgit v1.2.3