SDL: Fix cheats not loading
Vicki Pfau vi@endrift.com
Sat, 15 Jul 2017 07:14:42 -0700
2 files changed,
16 insertions(+),
0 deletions(-)
M
CHANGES
→
CHANGES
@@ -77,6 +77,7 @@ - Qt: Fix game unpausing after frame advancing and refocusing
- SDL: Fix game crash check - SDL: Fix race condition with audio thread when starting - SDL: Fix showing version number + - SDL: Fix cheats not loading - Test: Fix crash when loading invalid file - Test: Fix crash when fuzzing fails to load a file - Test: Don't rely on core for frames elapsed
M
src/platform/sdl/main.c
→
src/platform/sdl/main.c
@@ -21,6 +21,7 @@ #include "platform/python/engine.h"
#endif #endif +#include <mgba/core/cheats.h> #include <mgba/core/core.h> #include <mgba/core/config.h> #include <mgba/core/input.h>@@ -104,6 +105,16 @@ freeArguments(&args);
return 1; } + struct mCheatDevice* device = NULL; + if (args.cheatsFile && (device = renderer.core->cheatDevice(renderer.core))) { + struct VFile* vf = VFileOpen(args.cheatsFile, O_RDONLY); + if (vf) { + mCheatDeviceClear(device); + mCheatParseFile(device, vf); + vf->close(vf); + } + } + mInputMapInit(&renderer.core->inputMap, &GBAInputInfo); mCoreInitConfig(renderer.core, PORT); applyArguments(&args, &subparser, &renderer.core->config);@@ -147,6 +158,10 @@ // TODO: Use opts and config
ret = mSDLRun(&renderer, &args); mSDLDetachPlayer(&renderer.events, &renderer.player); mInputMapDeinit(&renderer.core->inputMap); + + if (device) { + mCheatDeviceDestroy(device); + } mSDLDeinit(&renderer);