Android: Detect when native code should flush unsaved data

This commit is contained in:
JosJuice 2025-04-26 10:33:01 +02:00 committed by Jordan Woyak
parent 8ee64a84c7
commit 30b88a69cf
4 changed files with 27 additions and 0 deletions

View file

@ -51,10 +51,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()
}
}

View file

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

View file

@ -158,6 +158,11 @@ void Shutdown()
Config::Shutdown();
}
void FlushUnsavedData()
{
INFO_LOG_FMT(CORE, "Flushing unsaved data...");
}
void InitControllers(const WindowSystemInfo& wsi)
{
if (g_controller_interface.IsInit())

View file

@ -14,6 +14,8 @@ namespace UICommon
void Init();
void Shutdown();
void FlushUnsavedData();
void InitControllers(const WindowSystemInfo& wsi);
void ShutdownControllers();