- Core info cache can now be enabled/disabled on all platforms via a new `Settings > Core > Cache Core Info Files` option
- Core info cache file has been renamed from `.cache` to `core_info.cache` (i.e. it is no longer a 'hidden' file on Unix platforms, so can be deleted easily)
- The core info cache file is now compressed (rzip) to further reduce disk IO
- The presence of a `core_info.refresh` file in the core info directory will force a one-time refresh of the info cache. This file is generated automatically when toggling on the `Cache Core Info Files` option, and we will also add it to core info file packaging such that updating info files (either manually or via the online updater) will force a refresh
- The core info cache no longer contains 'core is locked' and 'firmware missing' data fields; these are 'dynamic' properties that must be determined at runtime
- The 'core is locked' status is now determined on core info intialisation by parsing the core directory listing, rather than by performing indivdual 'lock file exists' checks. This minimises file IO, and greatly improves performance on devices with slow storage
- While parsing the core info cache file, we now avoid unnecessary `strdup()`s when adding entries to the resultant cache list
- Memory leaks (potential and real) have been fixed, and safety checks added
- Build errors have been fixed
This adds new entry under Settings -> Services (where all Lakka related
services are currently available, such as switches for services like
SSH, Samba, etc.). By adding this the users do not have to use the
command line / access the file system directly to change their local
time zone to adjust the date/time displayed in RetroArch.
These change handler functions had incorrect parameter (void *) instead
of (rarch_setting_t *) and were also spawning new local pointer to the
settings and other local variables, which was not necessary, as one can
use the value from the call (setting->target.value.boolean in these
cases).
I have also modified the systemd_sevice_toggle function. Before it
looked like it was creating / deleting the file in both child and parent
processes and started / stopped the systemd service in the child
process. Now both actions (creation / deletion of file and start / stop
of service) are done in the child process.
Below are the compiler warnings about incompatible pointer types:
```
menu/menu_setting.c: In function ‘setting_append_list’:
menu/menu_setting.c:18520:58: warning: assignment to ‘change_handler_t’ {aka ‘void (*)(struct rarch_setting *)’} from incompatible pointer type ‘void (*)(void *)’ [-Wincompatible-pointer-types]
18520 | (*list)[list_info->index - 1].change_handler = ssh_enable_toggle_change_handler;
| ^
menu/menu_setting.c:18536:58: warning: assignment to ‘change_handler_t’ {aka ‘void (*)(struct rarch_setting *)’} from incompatible pointer type ‘void (*)(void *)’ [-Wincompatible-pointer-types]
18536 | (*list)[list_info->index - 1].change_handler = samba_enable_toggle_change_handler;
| ^
menu/menu_setting.c:18552:58: warning: assignment to ‘change_handler_t’ {aka ‘void (*)(struct rarch_setting *)’} from incompatible pointer type ‘void (*)(void *)’ [-Wincompatible-pointer-types]
18552 | (*list)[list_info->index - 1].change_handler = bluetooth_enable_toggle_change_handler;
| ^
menu/menu_setting.c:18568:58: warning: assignment to ‘change_handler_t’ {aka ‘void (*)(struct rarch_setting *)’} from incompatible pointer type ‘void (*)(void *)’ [-Wincompatible-pointer-types]
18568 | (*list)[list_info->index - 1].change_handler = localap_enable_toggle_change_handler;
| ^
```
Copied RGUI Dracula theme localized strings to new Ozone Dracula theme.
Copied RGUI Dracula theme localized strings to new Ozone Dracula theme.
Added Ozone Dracula color theme to UI.
Added Ozone Dracula color theme entry.
config file was being freed at the end of input_remapping_load_file
when the menu_cbs_ok.c function was still using it afterwards - move
the config_file_free outside of the function and free manually
afterwards when we're done