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
This commit is contained in:
parent
69093cf2d6
commit
380b95bc59
47 changed files with 2853 additions and 344 deletions
|
@ -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;
|
||||
}
|
||||
*/
|
||||
Horizon horizon = _kernelContext.Device.System;
|
||||
|
||||
// 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.
|
||||
_indirectLayerHandle = horizon.AppletState.IndirectLayerHandles.Add(_applet);
|
||||
|
||||
ulong indirectLayerConsumerHandle = 1;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue