]> Chaos Git - corbenik/ctrulib.git/commitdiff
Merge branch 'master' into great-refactor
authorfincs <fincs.alt1@gmail.com>
Sun, 4 Oct 2015 15:37:19 +0000 (17:37 +0200)
committerfincs <fincs.alt1@gmail.com>
Sun, 4 Oct 2015 15:37:19 +0000 (17:37 +0200)
Conflicts:
libctru/include/3ds/services/hid.h
libctru/include/3ds/services/irrst.h

1  2 
libctru/include/3ds/mappable.h
libctru/include/3ds/services/hid.h
libctru/include/3ds/services/irrst.h
libctru/source/gfx.c
libctru/source/services/csnd.c
libctru/source/services/hid.c
libctru/source/services/irrst.c

index 0000000000000000000000000000000000000000,5df8c5e9ec8490bef8467a9655471579f412c9c1..d3ea4c1c11cf530a988328e9ea23d1335e6586a7
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,6 +1,6 @@@
 -u32 mappableSpaceFree(); // get free mappable space in bytes
+ #pragma once
+ // Functions for allocating/deallocating mappable memory
+ void* mappableAlloc(size_t size); // returns a page-aligned address
+ void mappableFree(void* mem);
++u32 mappableSpaceFree(void); // get free mappable space in bytes
index 74191c7bd0dc1a56e846dc4ab71733d11b3cb0d1,dafc009810710498d24ac9e7de96d3e02b636aaf..f5edd2a0a2097d938dbfa17e40851df8e802c20b
@@@ -75,13 -73,13 +73,13 @@@ typedef enu
  extern Handle hidMemHandle;
  extern vu32* hidSharedMem;
  
- Result hidInit(u32* sharedMem);
 -Result hidInit();
 -void hidExit();
++Result hidInit(void);
 +void hidExit(void);
  
 -void hidScanInput();
 -u32 hidKeysHeld();
 -u32 hidKeysDown();
 -u32 hidKeysUp();
 +void hidScanInput(void);
 +u32 hidKeysHeld(void);
 +u32 hidKeysDown(void);
 +u32 hidKeysUp(void);
  void hidTouchRead(touchPosition* pos);
  void hidCircleRead(circlePosition* pos);
  void hidAccelRead(accelVector* vector);
index f98efa0e008f1c950b6fb7f062f6a44a48436a12,cf2085e3741de894c59206631aacb0b61fb2e905..c6c735104d6b576ec95ef7e82313eddc1f37cc28
@@@ -7,13 -7,11 +7,11 @@@
  extern Handle irrstMemHandle;
  extern vu32* irrstSharedMem;
  
- Result irrstInit(u32* sharedMem);
 -Result irrstInit();
 -void irrstExit();
++Result irrstInit(void);
 +void irrstExit(void);
  
 -void irrstScanInput();
 -u32 irrstKeysHeld();
 +void irrstScanInput(void);
 +u32 irrstKeysHeld(void);
  void irrstCstickRead(circlePosition* pos);
  
  void irrstWaitForEvent(bool nextEvent);
index c63c28e0d9ca1948e39514d3a130652856081f64,f0b68a378364929c08555ce1c8e5661740d2056a..15dbbcc379b87d1d7af70014dcd8aaa01c3335a4
@@@ -5,8 -5,8 +5,9 @@@
  #include <3ds/gfx.h>
  #include <3ds/svc.h>
  #include <3ds/linear.h>
+ #include <3ds/mappable.h>
  #include <3ds/vram.h>
 +#include <3ds/gpu/gx.h>
  
  GSP_FramebufferInfo topFramebufferInfo, bottomFramebufferInfo;
  
@@@ -117,9 -117,9 +118,9 @@@ void gfxInit(GSP_FramebufferFormats top
  
        gspInit();
  
-       gfxSharedMemory=(u8*)0x10002000;
+       gfxSharedMemory=(u8*)mappableAlloc(0x1000);
  
 -      GSPGPU_AcquireRight(NULL, 0x0);
 +      GSPGPU_AcquireRight(0x0);
  
        //setup our gsp shared mem section
        svcCreateEvent(&gspEvent, 0x0);
@@@ -189,12 -189,18 +190,18 @@@ void gfxExit(void
        //unmap GSP shared mem
        svcUnmapMemoryBlock(gspSharedMemHandle, 0x10002000);
  
 -      GSPGPU_UnregisterInterruptRelayQueue(NULL);
 +      GSPGPU_UnregisterInterruptRelayQueue();
  
        svcCloseHandle(gspSharedMemHandle);
+       if(gfxSharedMemory != NULL)
+       {
+               mappableFree(gfxSharedMemory);
+               gfxSharedMemory = NULL;
+       }
        svcCloseHandle(gspEvent);
  
 -      GSPGPU_ReleaseRight(NULL);
 +      GSPGPU_ReleaseRight();
  
        gspExit();
  
index 43148bc8d8fd118f6d2ea5b953bb506cae093adf,283206247c3b71a97a22e2cea144ca375df01ee7..3f865c6f7bd266d732a48169e2918bd9df560aa3
@@@ -3,9 -3,9 +3,10 @@@
  #include <3ds/types.h>
  #include <3ds/svc.h>
  #include <3ds/srv.h>
+ #include <3ds/mappable.h>
  #include <3ds/os.h>
  #include <3ds/services/csnd.h>
 +#include <3ds/ipc.h>
  
  // See here regarding CSND shared-mem commands, etc: http://3dbrew.org/wiki/CSND_Shared_Memory
  
@@@ -162,6 -177,13 +178,13 @@@ Result csndExit(void
  
        ret = CSND_Shutdown();
        svcCloseHandle(csndHandle);
 -      
++
+       if(csndSharedMem != NULL)
+       {
+               mappableFree((void*) csndSharedMem);
+               csndSharedMem = NULL;
+       }
        return ret;
  }
  
index 9e8918ae5aafdc11fd1f9691651a995d65dcccb6,1be6050228023d31a23ae0977867363fe57ac278..afe3d19e4f2bccdda398709b8c1c85f7e68bca6f
@@@ -26,7 -26,7 +27,7 @@@ static angularRate gRate
  
  static bool hidInitialised;
  
- Result hidInit(u32* sharedMem)
 -Result hidInit()
++Result hidInit(void)
  {
        u8 val=0;
        Result ret=0;
        // Get sharedmem handle.
        if((ret=HIDUSER_GetHandles(&hidMemHandle, &hidEvents[HIDEVENT_PAD0], &hidEvents[HIDEVENT_PAD1], &hidEvents[HIDEVENT_Accel], &hidEvents[HIDEVENT_Gyro], &hidEvents[HIDEVENT_DebugPad]))) goto cleanup1;
  
-       // Map HID shared memory at addr "sharedMem".
-       hidSharedMem=sharedMem;
+       // Map HID shared memory.
+       hidSharedMem=(vu32*)mappableAlloc(0x2b0);
+       if(!hidSharedMem)
+       {
+               ret = -1;
+               goto cleanup1;
+       }
        if((ret=svcMapMemoryBlock(hidMemHandle, (u32)hidSharedMem, MEMPERM_READ, 0x10000000)))goto cleanup2;
  
 -      APT_CheckNew3DS(NULL, &val);
 +      APT_CheckNew3DS(&val);
  
        if(val)
        {
index b7bea6e012034ca71f41087e8f1087ae82d83860,083d2a67ce227896e0b3612ee8b68309c6e59674..b336f3703963f72d5dc9f869fb4e88882769e1c7
@@@ -6,8 -6,8 +6,9 @@@
  #include <3ds/types.h>
  #include <3ds/svc.h>
  #include <3ds/srv.h>
+ #include <3ds/mappable.h>
  #include <3ds/services/irrst.h>
 +#include <3ds/ipc.h>
  
  // used to determine whether or not we should do IRRST_Initialize
  Handle __get_handle_from_list(char* name);
@@@ -22,7 -22,7 +23,7 @@@ static u32 kHeld
  static circlePosition csPos;
  static bool irrstUsed = false;
  
- Result irrstInit(u32* sharedMem)
 -Result irrstInit()
++Result irrstInit(void)
  {
        if(irrstUsed)return 0;