GUI: Move running check into frontend

This commit is contained in:
Vicki Pfau 2018-01-10 00:40:41 -08:00
parent 7097d249af
commit e40cba5c8b
3 changed files with 13 additions and 11 deletions

View File

@ -18,10 +18,6 @@
#include <mgba-util/png-io.h>
#include <mgba-util/vfs.h>
#ifdef _3DS
#include <3ds.h>
#endif
#include <sys/time.h>
mLOG_DECLARE_CATEGORY(GUI_RUNNER);
@ -334,13 +330,13 @@ void mGUIRun(struct mGUIRunner* runner, const char* path) {
gettimeofday(&tv, 0);
runner->lastFpsCheck = 1000000LL * tv.tv_sec + tv.tv_usec;
while (true) {
#ifdef _3DS
running = aptMainLoop();
if (!running) {
break;
while (running) {
if (runner->running) {
running = runner->running(runner);
if (!running) {
break;
}
}
#endif
uint32_t guiKeys;
uint32_t heldKeys;
GUIPollInput(&runner->params, &guiKeys, &heldKeys);

View File

@ -70,6 +70,7 @@ struct mGUIRunner {
void (*incrementScreenMode)(struct mGUIRunner*);
void (*setFrameLimiter)(struct mGUIRunner*, bool limit);
uint16_t (*pollGameInput)(struct mGUIRunner*);
bool (*running)(struct mGUIRunner*);
};
void mGUIInit(struct mGUIRunner*, const char* port);

View File

@ -678,6 +678,10 @@ static void _setFrameLimiter(struct mGUIRunner* runner, bool limit) {
tickCounter = svcGetSystemTick();
}
static bool _running(struct mGUIRunner* runner) {
return aptMainLoop();
}
static uint32_t _pollInput(const struct mInputMap* map) {
hidScanInput();
int activeKeys = hidKeysHeld();
@ -1020,7 +1024,8 @@ int main() {
.unpaused = _gameLoaded,
.incrementScreenMode = _incrementScreenMode,
.setFrameLimiter = _setFrameLimiter,
.pollGameInput = _pollGameInput
.pollGameInput = _pollGameInput,
.running = _running
};
mGUIInit(&runner, "3ds");