--- a/src/MacSrc/Shock.c +++ b/src/MacSrc/Shock.c @@ -31,6 +31,7 @@ #include #ifdef __ANDROID__ +#include "qs_config.h" #include "xr_session.h" #endif @@ -109,6 +110,15 @@ LoadHotkeyKeybinds(); LoadMoveKeybinds(); +#ifdef __ANDROID__ + // Persistent, human-editable JSON config (questshock.config.json) - see + // qs_config.h/CONFIG.md. After prefs.txt is loaded (above) so this file + // can override it, before init_all() below so there's no live-vs- + // restart distinction to worry about yet - every field just takes full + // effect as part of this same startup. + qs_config_load_startup(); +#endif + // Process some startup arguments bool show_splash = !CheckArgument("-nosplash"); --- a/src/Libraries/INPUT/Source/sdl_events.c +++ b/src/Libraries/INPUT/Source/sdl_events.c @@ -29,6 +29,10 @@ #include #include +#ifdef __ANDROID__ +#include "qs_config.h" +#endif + extern SDL_Window *window; extern SDL_Renderer *renderer; @@ -481,6 +485,14 @@ SDL_Event ev; while (SDL_PollEvent(&ev)) { +#ifdef __ANDROID__ + // Custom event types qs_config_request_save()/_load() enqueue from + // the "Save Configuration"/"Load Configuration" menu buttons (see + // qs_config.h) - handled here, on this thread, rather than directly + // from those JNI calls (which run on Android's UI thread). + if (qs_config_handle_event(&ev)) + continue; +#endif switch (ev.type) { case SDL_QUIT: // a bit hacky at this place, but this would allow exiting the game via the window's [x] button