diff --git a/libctru/source/gfx.c b/libctru/source/gfx.c index bbc0dd8..e3c78c4 100644 --- a/libctru/source/gfx.c +++ b/libctru/source/gfx.c @@ -26,8 +26,6 @@ u8* gspHeap; u32* gxCmdBuf; extern u32 __gsp_heap_size; - - // TODO: this function is not thread-safe and you cannot 'free' this memory. void* gfxAllocLinear(size_t size) { diff --git a/libctru/source/services/gsp.c b/libctru/source/services/gsp.c index af95c0f..377547a 100644 --- a/libctru/source/services/gsp.c +++ b/libctru/source/services/gsp.c @@ -356,6 +356,9 @@ Result GSPGPU_RestoreVramSysArea(Handle* handle) Result GSPGPU_SubmitGxCommand(u32* sharedGspCmdBuf, u32 gxCommand[0x8], Handle* handle) { if(!sharedGspCmdBuf || !gxCommand)return -1; + + svcWaitSynchronization(gspEvent, 0x55bcb0); + svcClearEvent(gspEvent); u32 cmdBufHeader; __asm__ ("ldrex %[result], [%[adr]]" : [result] "=r" (cmdBufHeader) : [adr] "r" (sharedGspCmdBuf));