From 5057a1912e42181ca4ade6e7a2e12e2f89e94a5b Mon Sep 17 00:00:00 2001 From: fincs Date: Mon, 18 Jan 2021 20:46:50 +0100 Subject: [PATCH] nv: Allow user override of transfer memory creation --- nx/source/services/nv.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nx/source/services/nv.c b/nx/source/services/nv.c index 80a2a7cb..2b553dcf 100644 --- a/nx/source/services/nv.c +++ b/nx/source/services/nv.c @@ -11,12 +11,16 @@ __attribute__((weak)) u32 __nx_nv_transfermem_size = 0x800000; static Service g_nvSrv; static Service g_nvSrvClone; -static size_t g_nvIpcBufferSize = 0; static TransferMemory g_nvTransfermem; static Result _nvCmdInitialize(Handle proc, Handle sharedmem, u32 transfermem_size); static Result _nvSetClientPID(u64 AppletResourceUserId); +Result __attribute__((weak)) __nx_nv_create_tmem(TransferMemory *t, u32 *out_size, Permission perm) { + *out_size = __nx_nv_transfermem_size; + return tmemCreate(t, *out_size, perm); +} + NX_GENERATE_SERVICE_GUARD(nv); Result _nvInitialize(void) { @@ -42,13 +46,13 @@ Result _nvInitialize(void) { } if (R_SUCCEEDED(rc)) { - g_nvIpcBufferSize = g_nvSrv.pointer_buffer_size; + u32 tmem_size = 0; if (R_SUCCEEDED(rc)) - rc = tmemCreate(&g_nvTransfermem, __nx_nv_transfermem_size, Perm_None); + rc = __nx_nv_create_tmem(&g_nvTransfermem, &tmem_size, Perm_None); if (R_SUCCEEDED(rc)) - rc = _nvCmdInitialize(CUR_PROCESS_HANDLE, g_nvTransfermem.handle, __nx_nv_transfermem_size); + rc = _nvCmdInitialize(CUR_PROCESS_HANDLE, g_nvTransfermem.handle, tmem_size); // Clone the session handle - the cloned session is used to execute certain commands in parallel if (R_SUCCEEDED(rc))