[Scummvm-git-logs] scummvm branch-2-1 -> 5d6ece63b4c29f2bcba320ffc5702b954ebe05b2

antoniou79 antoniou at cti.gr
Tue Sep 24 13:50:51 CEST 2019


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
cb3f931442 ANDROID: Fix crash when exiting a game (Blade Runner)
9ba6d1550b ANDROID: Remove duplicate _system->quit() from JNI::Destroy()
5d6ece63b4 ANDROID: Use _system->destroy() instead of just delete in JNI::Destroy()


Commit: cb3f931442315c740f402186288b52cd19b5f8ef
    https://github.com/scummvm/scummvm/commit/cb3f931442315c740f402186288b52cd19b5f8ef
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-09-24T14:38:27+03:00

Commit Message:
ANDROID: Fix crash when exiting a game (Blade Runner)

Changed paths:
    backends/platform/android/android.cpp
    backends/platform/android/jni.cpp
    backends/platform/android/org/scummvm/scummvm/ScummVM.java


diff --git a/backends/platform/android/android.cpp b/backends/platform/android/android.cpp
index a5dedb0..5614d0a 100644
--- a/backends/platform/android/android.cpp
+++ b/backends/platform/android/android.cpp
@@ -126,6 +126,11 @@ OSystem_Android::~OSystem_Android() {
 	_timerManager = 0;
 
 	deleteMutex(_event_queue_lock);
+
+	delete _savefileManager;
+	_savefileManager = 0;
+
+	ModularBackend::quit();
 }
 
 void *OSystem_Android::timerThreadFunc(void *arg) {
diff --git a/backends/platform/android/jni.cpp b/backends/platform/android/jni.cpp
index 5e4c116..db91fc7 100644
--- a/backends/platform/android/jni.cpp
+++ b/backends/platform/android/jni.cpp
@@ -562,6 +562,7 @@ void JNI::destroy(JNIEnv *env, jobject self) {
 	delete _asset_archive;
 	_asset_archive = 0;
 
+	_system->quit();
 	delete _system;
 	g_system = 0;
 	_system = 0;
diff --git a/backends/platform/android/org/scummvm/scummvm/ScummVM.java b/backends/platform/android/org/scummvm/scummvm/ScummVM.java
index 2784623..8dd974b 100644
--- a/backends/platform/android/org/scummvm/scummvm/ScummVM.java
+++ b/backends/platform/android/org/scummvm/scummvm/ScummVM.java
@@ -141,11 +141,10 @@ public abstract class ScummVM implements SurfaceHolder.Callback, Runnable {
 
 		int res = main(_args);
 
-		destroy();
-
 		deinitEGL();
 		deinitAudio();
 
+		destroy();
 		// On exit, tear everything down for a fresh restart next time.
 		System.exit(res);
 	}


Commit: 9ba6d1550b49de27e2a59d77f8c982996f06a88b
    https://github.com/scummvm/scummvm/commit/9ba6d1550b49de27e2a59d77f8c982996f06a88b
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-09-24T14:38:39+03:00

Commit Message:
ANDROID: Remove duplicate _system->quit() from JNI::Destroy()

Since it is already called in Jni::main after scummvm_main() returns. The second call in destroy caused crashes on some devices.

Changed paths:
    backends/platform/android/jni.cpp


diff --git a/backends/platform/android/jni.cpp b/backends/platform/android/jni.cpp
index db91fc7..5e4c116 100644
--- a/backends/platform/android/jni.cpp
+++ b/backends/platform/android/jni.cpp
@@ -562,7 +562,6 @@ void JNI::destroy(JNIEnv *env, jobject self) {
 	delete _asset_archive;
 	_asset_archive = 0;
 
-	_system->quit();
 	delete _system;
 	g_system = 0;
 	_system = 0;


Commit: 5d6ece63b4c29f2bcba320ffc5702b954ebe05b2
    https://github.com/scummvm/scummvm/commit/5d6ece63b4c29f2bcba320ffc5702b954ebe05b2
Author: Thanasis Antoniou (a.antoniou79 at gmail.com)
Date: 2019-09-24T14:38:51+03:00

Commit Message:
ANDROID: Use _system->destroy() instead of just delete in JNI::Destroy()

Changed paths:
    backends/platform/android/android.cpp
    backends/platform/android/jni.cpp


diff --git a/backends/platform/android/android.cpp b/backends/platform/android/android.cpp
index 5614d0a..7513639 100644
--- a/backends/platform/android/android.cpp
+++ b/backends/platform/android/android.cpp
@@ -129,8 +129,6 @@ OSystem_Android::~OSystem_Android() {
 
 	delete _savefileManager;
 	_savefileManager = 0;
-
-	ModularBackend::quit();
 }
 
 void *OSystem_Android::timerThreadFunc(void *arg) {
diff --git a/backends/platform/android/jni.cpp b/backends/platform/android/jni.cpp
index 5e4c116..2c27838 100644
--- a/backends/platform/android/jni.cpp
+++ b/backends/platform/android/jni.cpp
@@ -562,9 +562,13 @@ void JNI::destroy(JNIEnv *env, jobject self) {
 	delete _asset_archive;
 	_asset_archive = 0;
 
-	delete _system;
+	// _system is a pointer of OSystem_Android <--- ModularBackend <--- BaseBacked <--- Common::OSystem
+	// It's better to call destroy() rather than just delete here
+	// to avoid mutex issues if a Common::String is used after this point
+	_system->destroy();
+
 	g_system = 0;
-	_system = 0;
+	_system  = 0;
 
 	sem_destroy(&pause_sem);
 





More information about the Scummvm-git-logs mailing list