[Android] Fixes Bug 2041 - can't get SDL_QUIT event...
Thanks to Denis Bernard! Also, changed the Android manifest so the app doesn't quit with orientation changes, and made testgles.c exit properly on Android.main
parent
e27248c27e
commit
22770a8f40
|
@ -22,7 +22,9 @@
|
|||
android:allowBackup="true"
|
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
|
||||
<activity android:name="SDLActivity"
|
||||
android:label="@string/app_name">
|
||||
android:label="@string/app_name"
|
||||
android:configChanges="keyboardHidden|orientation"
|
||||
>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
|
|
|
@ -121,13 +121,13 @@ public class SDLActivity extends Activity {
|
|||
SDLActivity.nativeQuit();
|
||||
|
||||
// Now wait for the SDL thread to quit
|
||||
if (mSDLThread != null) {
|
||||
if (SDLActivity.mSDLThread != null) {
|
||||
try {
|
||||
mSDLThread.join();
|
||||
SDLActivity.mSDLThread.join();
|
||||
} catch(Exception e) {
|
||||
Log.v("SDL", "Problem stopping thread: " + e);
|
||||
}
|
||||
mSDLThread = null;
|
||||
SDLActivity.mSDLThread = null;
|
||||
|
||||
//Log.v("SDL", "Finished waiting for SDL thread");
|
||||
}
|
||||
|
|
|
@ -283,9 +283,16 @@ void Java_org_libsdl_app_SDLActivity_nativeLowMemory(
|
|||
void Java_org_libsdl_app_SDLActivity_nativeQuit(
|
||||
JNIEnv* env, jclass cls)
|
||||
{
|
||||
/* Discard previous events. The user should have handled state storage
|
||||
* in SDL_APP_WILLENTERBACKGROUND. After nativeQuit() is called, no
|
||||
* events other than SDL_QUIT and SDL_APP_TERMINATING should fire */
|
||||
SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT);
|
||||
/* Inject a SDL_QUIT event */
|
||||
SDL_SendQuit();
|
||||
SDL_SendAppEvent(SDL_APP_TERMINATING);
|
||||
/* Resume the event loop so that the app can catch SDL_QUIT which
|
||||
* should now be the top event in the event queue. */
|
||||
if (!SDL_SemValue(Android_ResumeSem)) SDL_SemPost(Android_ResumeSem);
|
||||
}
|
||||
|
||||
/* Pause */
|
||||
|
|
|
@ -82,7 +82,9 @@ Android_PumpEvents(_THIS)
|
|||
isPaused = 0;
|
||||
|
||||
/* Restore the GL Context from here, as this operation is thread dependent */
|
||||
android_egl_context_restore();
|
||||
if (!SDL_HasEvent(SDL_QUIT)) {
|
||||
android_egl_context_restore();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -335,7 +335,9 @@ main(int argc, char *argv[])
|
|||
SDL_Log("%2.2f frames per second\n",
|
||||
((double) frames * 1000) / (now - then));
|
||||
}
|
||||
#if !defined(__ANDROID__)
|
||||
quit(0);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue