Use a cleaner approach which can feasibly work on all platforms.
Uses input_push/pop_analod_dpad to modify the joyaxis field before
polling input. This way, the RetroPad D-pad binds can inherit the
joyaxis fields from ANALOG_LEFT_X_PLUS and friends.
Also add support for the field in RGUI and saves settings.
Merging yesterday was probably a bit premature.
One issue I overlooked was that per-core configs were not flushed to disk
when loading a new core on PC. The per-core flushing only happened on
main_exit(), which is only run on application termination. This hence
would only work with consoles with exitspawn.
config_set_defaults() must be called when loading per-core-specifics as
well or lots of options silently leak into other core specific configs
when cores are changed.
The handling with g_extern.config_path and original_config_path was
difficult logic and very error prone considering it was mutated aribitrarily by RGUI.
I've removed the original config path concept and stuck
with that config_path is *only* for global config, and
core_specific_config_path is for core-specifics (which are resolved
during config load). Saves some memory too,
which is always nice.
The block_config_read solution I proposed yesterday was not good after
all (in fact, broken on PC), and the current solution should work better.
"RetroArch Config" option in RGUI now only shows global config.
It shouldn't be RGUI browser dir. Instead it is a more developer centric
option for when libretro apps are distributed (along with RetroArch for
example). Also facilitates a standardized assets folder later on if
applicable.
- both MainMenuActivity and RetroActivity are single instances now
- AKEYCODE_BACK gets eaten and onBackPressed in Java is triggered
- onBackPressed right now calls an instance of MainMenuActivity
(reuses the existing activity on the stack)
- User can switch back and forth between RetroActivity and MainMenuActivity
with AKEYCODE_BACK / Back button
- When a subsequent intent is launched after RetroActivity has already been
started up once, the pending intent gets passed to the existing RetroActivity
throug onNewIntent - in C land it will look every frame if an intent is pending - if it is, it will look up certain variables through JNI to launch a new game - or whatever it is that the intent wants to do
- With this we can now switch seamlessly between Android UI and RetroArch
itself.