|
@@ -714,6 +714,41 @@ void driver_set_nonblock_state(void)
|
|
|
: audio_st->chunk_block_size;
|
|
|
}
|
|
|
|
|
|
+#ifndef HAVE_MENU
|
|
|
+/* This function gets called at first startup on Android/iOS
|
|
|
+ * when we need to extract the APK contents/zip file. This
|
|
|
+ * file contains assets which then get extracted to the
|
|
|
+ * user's asset directories. */
|
|
|
+static void bundle_decompressed(retro_task_t *task,
|
|
|
+ void *task_data,
|
|
|
+ void *user_data, const char *err)
|
|
|
+{
|
|
|
+ settings_t *settings = config_get_ptr();
|
|
|
+ decompress_task_data_t *dec = (decompress_task_data_t*)task_data;
|
|
|
+
|
|
|
+ if (err)
|
|
|
+ RARCH_ERR("%s", err);
|
|
|
+
|
|
|
+ if (dec)
|
|
|
+ {
|
|
|
+ if (!err)
|
|
|
+ command_event(CMD_EVENT_REINIT, NULL);
|
|
|
+
|
|
|
+ /* delete bundle? */
|
|
|
+ free(dec->source_file);
|
|
|
+ free(dec);
|
|
|
+ }
|
|
|
+
|
|
|
+ configuration_set_uint(settings,
|
|
|
+ settings->uints.bundle_assets_extract_last_version,
|
|
|
+ settings->uints.bundle_assets_extract_version_current);
|
|
|
+
|
|
|
+ configuration_set_bool(settings, settings->bools.bundle_finished, true);
|
|
|
+
|
|
|
+ command_event(CMD_EVENT_MENU_SAVE_CURRENT_CONFIG, NULL);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
void drivers_init(
|
|
|
settings_t *settings,
|
|
|
int flags,
|
|
@@ -944,6 +979,27 @@ void drivers_init(
|
|
|
}
|
|
|
|
|
|
#else
|
|
|
+ if ( settings->bools.bundle_assets_extract_enable
|
|
|
+ && !string_is_empty(settings->paths.bundle_assets_src)
|
|
|
+ && !string_is_empty(settings->paths.bundle_assets_dst)
|
|
|
+ && (settings->uints.bundle_assets_extract_version_current
|
|
|
+ != settings->uints.bundle_assets_extract_last_version)
|
|
|
+ )
|
|
|
+ {
|
|
|
+ task_push_decompress(
|
|
|
+ settings->paths.bundle_assets_src,
|
|
|
+ settings->paths.bundle_assets_dst,
|
|
|
+ NULL,
|
|
|
+ settings->paths.bundle_assets_dst_subdir,
|
|
|
+ NULL,
|
|
|
+ bundle_decompressed,
|
|
|
+ NULL,
|
|
|
+ NULL,
|
|
|
+ false);
|
|
|
+ /* Support only 1 version - setting this would prevent the assets from being extracted every time */
|
|
|
+ configuration_set_int(settings,
|
|
|
+ settings->uints.bundle_assets_extract_last_version, 1);
|
|
|
+ }
|
|
|
/* Qt uses core info, even if the menu is disabled */
|
|
|
command_event(CMD_EVENT_CORE_INFO_INIT, NULL);
|
|
|
command_event(CMD_EVENT_LOAD_CORE_PERSIST, NULL);
|