From 0990c553c6309764465ed08ffc4fdb62ac6105ff Mon Sep 17 00:00:00 2001 From: Gregor Parzefall Date: Thu, 18 Jan 2024 22:43:02 +0100 Subject: [PATCH] Android: Save settings in onStop --- .../main/java/net/minetest/minetest/GameActivity.java | 11 +++++++++++ src/porting_android.cpp | 7 +++++++ 2 files changed, 18 insertions(+) diff --git a/android/app/src/main/java/net/minetest/minetest/GameActivity.java b/android/app/src/main/java/net/minetest/minetest/GameActivity.java index f2ff09f3de436..85336ac7ee220 100644 --- a/android/app/src/main/java/net/minetest/minetest/GameActivity.java +++ b/android/app/src/main/java/net/minetest/minetest/GameActivity.java @@ -85,6 +85,17 @@ protected void onResume() { makeFullScreen(); } + private native void saveSettings(); + + @Override + protected void onStop() { + super.onStop(); + // Avoid losing setting changes in case the app is onDestroy()ed later. + // Saving stuff in onStop() is recommended in the Android activity + // lifecycle documentation. + saveSettings(); + } + @Override public void onBackPressed() { // Ignore the back press so Minetest can handle it diff --git a/src/porting_android.cpp b/src/porting_android.cpp index 43c2cea357542..a649751d32c23 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -28,6 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "config.h" #include "filesys.h" #include "log.h" +#include "settings.h" #include #include @@ -39,6 +40,12 @@ with this program; if not, write to the Free Software Foundation, Inc., extern int main(int argc, char *argv[]); +extern "C" JNIEXPORT void JNICALL +Java_net_minetest_minetest_GameActivity_saveSettings(JNIEnv* env, jobject /* this */) { + if (!g_settings_path.empty()) + g_settings->updateConfigFile(g_settings_path.c_str()); +} + namespace porting { // used here: void cleanupAndroid();