From: fincs Date: Sat, 20 Jun 2015 15:07:06 +0000 (+0200) Subject: Run initialization/shutdown code in irrstInit/irrstExit when needed X-Git-Tag: v0.6.0~43 X-Git-Url: https://chaos.moe/g/?a=commitdiff_plain;h=4ebb95cc2f8270f6ed8452916bd4eed1f83a9121;p=corbenik%2Fctrulib.git Run initialization/shutdown code in irrstInit/irrstExit when needed --- 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); }