aboutsummaryrefslogtreecommitdiff
path: root/core.c
diff options
context:
space:
mode:
authorneonloop2023-01-25 07:35:46 +0000
committerneonloop2023-01-25 07:35:46 +0000
commit4188eb5b7c459df34fb11c3078d737a90dc56eeb (patch)
tree72f7c0d4341d39adc7b173eb116f591a29df4723 /core.c
parentb90dbbdc967878dc461fefe78a8ef86886ae7a5a (diff)
downloadpicoarch-4188eb5b7c459df34fb11c3078d737a90dc56eeb.tar.gz
picoarch-4188eb5b7c459df34fb11c3078d737a90dc56eeb.tar.bz2
picoarch-4188eb5b7c459df34fb11c3078d737a90dc56eeb.zip
Fixes load new content
Cores do not always clean up on unload content, deinit and reinit is more reliable. Some cores do not even clean up on deinit and reinit, need all statics reinitialized. On many platforms dlclose / dlopen will work. FunKey uses musl libc where dlclose is no-op, so instead will exec again with current core and new content path. Overrides decide whether easy or hard clean up is needed. Assume unknown cores need hard cleanup, otherwise specified by "needs_reopen" override. Also - FunKey will now autosave and resume during load new content - Load new content deferred until after menu responds to keypress, otherwise key release can be missed and menu seems stuck
Diffstat (limited to 'core.c')
-rw-r--r--core.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/core.c b/core.c
index 8dead78..34810a5 100644
--- a/core.c
+++ b/core.c
@@ -715,14 +715,17 @@ const char **core_extensions(void) {
}
void core_unload(void) {
- PA_INFO("Unloading core...\n");
-
if (current_core.initialized) {
core_unload_content();
current_core.retro_deinit();
current_core.initialized = false;
}
+}
+
+void core_close(void) {
+ PA_INFO("Unloading core...\n");
+ core_unload();
string_list_free(extensions);
extensions = NULL;