diff --git a/nx/include/switch/result.h b/nx/include/switch/result.h index 1f8f43fd..6ad0bced 100644 --- a/nx/include/switch/result.h +++ b/nx/include/switch/result.h @@ -72,6 +72,7 @@ enum { LibnxError_IncompatSysVer, LibnxError_InitFail_Time, LibnxError_TooManyDevOpTabs, + LibnxError_AppletFailedToInitialize, }; /// libnx nvidia error codes diff --git a/nx/source/services/nv.c b/nx/source/services/nv.c index 0cde75a0..bcbd5662 100644 --- a/nx/source/services/nv.c +++ b/nx/source/services/nv.c @@ -20,6 +20,9 @@ Result nvInitialize(size_t transfermem_size) if (serviceIsActive(&g_nvSrv)) return MAKERESULT(Module_Libnx, LibnxError_AlreadyInitialized); + if (R_FAILED(appletInitialize())) + return MAKERESULT(Module_Libnx, LibnxError_AppletFailedToInitialize); + Result rc = 0; u64 AppletResourceUserId = 0; @@ -59,6 +62,7 @@ Result nvInitialize(size_t transfermem_size) } if (R_FAILED(rc)) { + appletExit(); nvExit(); } @@ -67,6 +71,7 @@ Result nvInitialize(size_t transfermem_size) void nvExit(void) { + appletExit(); serviceClose(&g_nvSrv); tmemClose(&g_nvTransfermem); }