From 522901b88d697c7f28366a8b05953a9ebf299e13 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 2 Nov 2017 08:46:14 -0700 Subject: [PATCH] Fixed bug 3933 - Android, no need of the listener thread Sylvain A listener thread has been added to know when the native thread would end. But now, it is more easy to only check that after the main function has returned. It's one thread less. --- .../main/java/org/libsdl/app/SDLActivity.java | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java index ae0bc811a0807..75e18bb2cab71 100644 --- a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java +++ b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java @@ -371,27 +371,8 @@ public static void handleNativeState() { // Start up the C app thread and enable sensor input for the first time // FIXME: Why aren't we enabling sensor input at start? - final Thread sdlThread = new Thread(new SDLMain(), "SDLThread"); + mSDLThread = new Thread(new SDLMain(), "SDLThread"); mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true); - sdlThread.start(); - - // Set up a listener thread to catch when the native thread ends - mSDLThread = new Thread(new Runnable() { - @Override - public void run() { - try { - sdlThread.join(); - } catch (Exception e) { - // Ignore any exception - } finally { - // Native thread has finished - if (!mExitCalledFromJava) { - handleNativeExit(); - } - } - } - }, "SDLThreadListener"); - mSDLThread.start(); } @@ -1044,6 +1025,11 @@ public void run() { SDLActivity.nativeRunMain(library, function, arguments); Log.v("SDL", "Finished main function"); + + // Native thread has finished, let's finish the Activity + if (!SDLActivity.mExitCalledFromJava) { + SDLActivity.handleNativeExit(); + } } }