浏览代码

Merge branch 'master' of http://8.136.234.80:10002/WangYongJun/GameConsole

wangyongj 2 年之前
父节点
当前提交
f3fadae822
共有 1 个文件被更改,包括 56 次插入0 次删除
  1. 56 0
      app/src/main/cpp/retroarch.c

+ 56 - 0
app/src/main/cpp/retroarch.c

@@ -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);