summaryrefslogtreecommitdiff
path: root/Source/Android
diff options
context:
space:
mode:
authorOatmealDome <julian@oatmealdome.me>2022-01-09 15:51:07 -0500
committerOatmealDome <julian@oatmealdome.me>2022-01-21 17:17:42 -0500
commit2fc7671eaf9089d2b5d0a586e98120d786159e9a (patch)
tree0f9bc2a8bb24f8a49e464d189ea7957ef9e95b4a /Source/Android
parent19e1809cdfbd8c58d8506f4f87462641ac20f798 (diff)
WiiUtils: Add doOnlineUpdate() function
Diffstat (limited to 'Source/Android')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java2
-rw-r--r--Source/Android/jni/WiiUtils.cpp20
2 files changed, 22 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java
index 560a5d9727..2366eba33d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/WiiUtils.java
@@ -25,4 +25,6 @@ public final class WiiUtils
public static native int importWiiSave(String file, BooleanSupplier canOverwrite);
public static native void importNANDBin(String file);
+
+ public static native int doOnlineUpdate(String region, WiiUpdateCallback callback);
}
diff --git a/Source/Android/jni/WiiUtils.cpp b/Source/Android/jni/WiiUtils.cpp
index f372f65229..8745d98bdd 100644
--- a/Source/Android/jni/WiiUtils.cpp
+++ b/Source/Android/jni/WiiUtils.cpp
@@ -8,6 +8,7 @@
#include "jni/AndroidCommon/AndroidCommon.h"
#include "jni/AndroidCommon/IDCache.h"
+#include "Common/ScopeGuard.h"
#include "Core/HW/WiiSave.h"
#include "Core/WiiUtils.h"
#include "DiscIO/NANDImporter.h"
@@ -108,4 +109,23 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_WiiUtils_importNANDB
return "";
});
}
+
+JNIEXPORT jint JNICALL Java_org_dolphinemu_dolphinemu_utils_WiiUtils_doOnlineUpdate(
+ JNIEnv* env, jclass, jstring jRegion, jobject jCallback)
+{
+ const std::string region = GetJString(env, jRegion);
+
+ jobject jCallbackGlobal = env->NewGlobalRef(jCallback);
+ Common::ScopeGuard scope_guard([jCallbackGlobal, env] { env->DeleteGlobalRef(jCallbackGlobal); });
+
+ const auto callback = [&jCallbackGlobal](int processed, int total, u64 title_id) {
+ JNIEnv* env = IDCache::GetEnvForThread();
+ return static_cast<bool>(env->CallBooleanMethod(
+ jCallbackGlobal, IDCache::GetWiiUpdateCallbackFunction(), processed, total, title_id));
+ };
+
+ WiiUtils::UpdateResult result = WiiUtils::DoOnlineUpdate(callback, region);
+
+ return ConvertUpdateResult(result);
+}
}