From 4ebb95cc2f8270f6ed8452916bd4eed1f83a9121 Mon Sep 17 00:00:00 2001 From: fincs Date: Sat, 20 Jun 2015 17:07:06 +0200 Subject: [PATCH] Run initialization/shutdown code in irrstInit/irrstExit when needed --- libctru/source/services/irrst.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libctru/source/services/irrst.c b/libctru/source/services/irrst.c index 1536640..14abbcb 100644 --- a/libctru/source/services/irrst.c +++ b/libctru/source/services/irrst.c @@ -8,6 +8,9 @@ #include <3ds/srv.h> #include <3ds/services/irrst.h> +// used to determine whether or not we should do IRRST_Initialize +Handle __get_handle_from_list(char* name); + Handle irrstHandle; Handle irrstMemHandle; Handle irrstEvent; @@ -31,6 +34,9 @@ Result irrstInit(u32* sharedMem) // Get sharedmem handle. if((ret=IRRST_GetHandles(&irrstMemHandle, &irrstEvent))) goto cleanup1; + // Initialize ir:rst + if(__get_handle_from_list("ir:rst")==0)ret=IRRST_Initialize(10, 0); + // Map ir:rst shared memory at addr "sharedMem". irrstSharedMem=sharedMem; if((ret=svcMapMemoryBlock(irrstMemHandle, (u32)irrstSharedMem, MEMPERM_READ, 0x10000000)))goto cleanup2; @@ -55,6 +61,7 @@ void irrstExit() svcCloseHandle(irrstEvent); // Unmap ir:rst sharedmem and close handles. svcUnmapMemoryBlock(irrstMemHandle, (u32)irrstSharedMem); + if(__get_handle_from_list("ir:rst")==0) IRRST_Shutdown(); svcCloseHandle(irrstMemHandle); svcCloseHandle(irrstHandle); } -- 2.39.5