]> Chaos Git - corbenik/ctrulib.git/commitdiff
Run initialization/shutdown code in irrstInit/irrstExit when needed
authorfincs <fincs.alt1@gmail.com>
Sat, 20 Jun 2015 15:07:06 +0000 (17:07 +0200)
committerfincs <fincs.alt1@gmail.com>
Sat, 20 Jun 2015 15:07:06 +0000 (17:07 +0200)
libctru/source/services/irrst.c

index 1536640d0bb44c1896464fa0e1449d0d33299596..14abbcbd014b31f7b44191f8f9f0ed0b7bfef5f3 100644 (file)
@@ -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);
 }