diff options
| author | JosJuice <josjuice@gmail.com> | 2025-04-26 10:33:01 +0200 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2026-01-19 21:56:09 -0600 |
| commit | 0ba32f7add97daf1c5ea52cf77b75e81d862676f (patch) | |
| tree | 88a4225db26349f7b326a0b597725cc2f6ab4299 | |
| parent | 2a771937cf0a4a45cd466d3eea089a083f73f3c0 (diff) | |
Android: Detect when native code should flush unsaved data
| -rw-r--r-- | Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt | 11 | ||||
| -rw-r--r-- | Source/Android/jni/ActivityTracker.cpp | 9 | ||||
| -rw-r--r-- | Source/Core/UICommon/UICommon.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/UICommon/UICommon.h | 2 |
4 files changed, 27 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt index 8bcd1bdecb..62de1f4161 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ActivityTracker.kt @@ -56,10 +56,21 @@ class ActivityTracker : ActivityLifecycleCallbacks { override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) {} + override fun onActivityPostSaveInstanceState(activity: Activity, bundle: Bundle) { + if (DirectoryInitialization.areDolphinDirectoriesReady() && + !activity.isChangingConfigurations + ) { + flushUnsavedData() + } + } + override fun onActivityDestroyed(activity: Activity) {} companion object { @JvmStatic external fun setBackgroundExecutionAllowedNative(allowed: Boolean) + + @JvmStatic + external fun flushUnsavedData() } } diff --git a/Source/Android/jni/ActivityTracker.cpp b/Source/Android/jni/ActivityTracker.cpp index b871890576..20fc7df79a 100644 --- a/Source/Android/jni/ActivityTracker.cpp +++ b/Source/Android/jni/ActivityTracker.cpp @@ -5,6 +5,8 @@ #include "Common/Logging/Log.h" #include "Core/AchievementManager.h" +#include "UICommon/UICommon.h" +#include "jni/Host.h" extern "C" { @@ -18,4 +20,11 @@ Java_org_dolphinemu_dolphinemu_utils_ActivityTracker_setBackgroundExecutionAllow INFO_LOG_FMT(CORE, "SetBackgroundExecutionAllowed {}", allowed); AchievementManager::GetInstance().SetBackgroundExecutionAllowed(allowed); } + +JNIEXPORT void JNICALL +Java_org_dolphinemu_dolphinemu_utils_ActivityTracker_flushUnsavedData(JNIEnv*, jclass) +{ + HostThreadLock guard; + UICommon::FlushUnsavedData(); +} } diff --git a/Source/Core/UICommon/UICommon.cpp b/Source/Core/UICommon/UICommon.cpp index 60077bfcd5..8fe882b9ad 100644 --- a/Source/Core/UICommon/UICommon.cpp +++ b/Source/Core/UICommon/UICommon.cpp @@ -162,6 +162,11 @@ void Shutdown() Config::Shutdown(); } +void FlushUnsavedData() +{ + INFO_LOG_FMT(CORE, "Flushing unsaved data..."); +} + void InitControllers(const WindowSystemInfo& wsi) { if (g_controller_interface.IsInit()) diff --git a/Source/Core/UICommon/UICommon.h b/Source/Core/UICommon/UICommon.h index f23a0005c7..e586283816 100644 --- a/Source/Core/UICommon/UICommon.h +++ b/Source/Core/UICommon/UICommon.h @@ -14,6 +14,8 @@ namespace UICommon void Init(); void Shutdown(); +void FlushUnsavedData(); + void InitControllers(const WindowSystemInfo& wsi); void ShutdownControllers(); |
