Add C3D_FrameEndHook()

This commit is contained in:
fincs 2017-10-30 21:06:23 +01:00
parent 8764804dd5
commit 4ed5536bcc
2 changed files with 13 additions and 0 deletions

View File

@ -35,6 +35,8 @@ bool C3D_FrameDrawOn(C3D_RenderTarget* target);
void C3D_FrameSplit(u8 flags);
void C3D_FrameEnd(u8 flags);
void C3D_FrameEndHook(void (* hook)(void*), void* param);
float C3D_GetDrawingTime(void);
float C3D_GetProcessingTime(void);

View File

@ -21,6 +21,8 @@ static u8 frameStage;
static float framerate = 60.0f;
static float framerateCounter[2] = { 60.0f, 60.0f };
static u32 frameCounter[2];
static void (* frameEndCb)(void*);
static void* frameEndCbData;
static bool framerateLimit(int id)
{
@ -242,6 +244,9 @@ void C3D_FrameEnd(u8 flags)
{
C3D_Context* ctx = C3Di_GetContext();
if (frameEndCb)
frameEndCb(frameEndCbData);
C3D_FrameSplit(flags);
inFrame = false;
osTickCounterUpdate(&cpuTime);
@ -279,6 +284,12 @@ void C3D_FrameEnd(u8 flags)
gxCmdQueueRun(&ctx->gxQueue);
}
void C3D_FrameEndHook(void (* hook)(void*), void* param)
{
frameEndCb = hook;
frameEndCbData = param;
}
float C3D_GetDrawingTime(void)
{
return osTickCounterRead(&gpuTime);