]> Chaos Git - corbenik/ctrulib.git/commitdiff
Fixed broken MIC shutdown code. Use a tmp field for svcControlMemory when not allocat...
authoryellows8 <yellows8@users.noreply.github.com>
Sat, 29 Nov 2014 00:28:59 +0000 (19:28 -0500)
committeryellows8 <yellows8@users.noreply.github.com>
Sat, 29 Nov 2014 00:28:59 +0000 (19:28 -0500)
examples/mic/README.md
libctru/source/initSystem.c
libctru/source/services/mic.c

index 3f0c74c6aceaaf9d84792865cb5ab7ba1e444528..f3e6d7231b61e4b9d3d59da4b2fe405015069069 100644 (file)
@@ -3,5 +3,3 @@ mic
 
 Example for using the microphone with ctrulib. Hold down the A button to record, the app will then play the recorded audio once the A button is released. Roughly 32 seconds of audio can be recorded with the default audiobuf size in this app.
 
-Do not use this example(and/or ctrulib MIC?), since MIC is broken currently.
-
index efd13760b2b0a9896ab5fb0cd6f732d96bd62e4c..039f862bae3e039813a5bca442ae3bfa76522335 100644 (file)
@@ -26,16 +26,18 @@ void __destroy_handle_list(void);
 
 void __attribute__((noreturn)) __ctru_exit(int rc)
 {
+       u32 tmp=0;
+
        // Run the global destructors
        __libc_fini_array();
 
        // TODO: APT exit goes here
 
        // Unmap the linear heap
-       svcControlMemory(&__linear_heap, __linear_heap, 0x0, __linear_heap_size, MEMOP_FREE, 0x0);
+       svcControlMemory(&tmp, __linear_heap, 0x0, __linear_heap_size, MEMOP_FREE, 0x0);
 
        // Unmap the application heap
-       svcControlMemory(&heapBase, heapBase, 0x0, __heap_size, MEMOP_FREE, 0x0);
+       svcControlMemory(&tmp, heapBase, 0x0, __heap_size, MEMOP_FREE, 0x0);
 
        // Close some handles
        __destroy_handle_list();
@@ -50,13 +52,15 @@ void __attribute__((noreturn)) __ctru_exit(int rc)
 
 void initSystem(void (*retAddr)(void))
 {
+       u32 tmp=0;
+
        // Register newlib exit() syscall
        __syscalls.exit = __ctru_exit;
        __system_retAddr = __service_ptr ? retAddr : NULL;
 
        // Allocate the application heap
        heapBase = 0x08000000;
-       svcControlMemory(&heapBase, heapBase, 0x0, __heap_size, MEMOP_ALLOC, 0x3);
+       svcControlMemory(&tmp, heapBase, 0x0, __heap_size, MEMOP_ALLOC, 0x3);
 
        // Allocate the linear heap
        svcControlMemory(&__linear_heap, 0x0, 0x0, __linear_heap_size, MEMOP_ALLOC_LINEAR, 0x3);
index 817b9aafc8de3682beab60f89bc5a77b3e6d2a60..463f94de788bd4ec6a31a37379b6f009a335924e 100644 (file)
@@ -63,9 +63,6 @@ Result MIC_Shutdown()
 
        MIC_cmd5();
 
-       ret = svcUnmapMemoryBlock(MIC_sharedmem_handle, (u32)MIC_sharedmem);
-       if(ret!=0)return ret;
-
        ret = svcCloseHandle(MIC_sharedmem_handle);
        if(ret!=0)return ret;