mirror of
https://github.com/DrBeef/QuestZDoom.git
synced 2025-04-24 18:22:02 +00:00
Implemented clean shutdown
This commit is contained in:
parent
7ec9b2932e
commit
c893d99b6c
7 changed files with 38 additions and 32 deletions
|
@ -1406,7 +1406,7 @@ bool QzDoom_processMessageQueue() {
|
|||
}
|
||||
|
||||
void showLoadingIcon();
|
||||
|
||||
void jni_shutdown();
|
||||
|
||||
void * AppThreadFunction(void * parm ) {
|
||||
gAppThread = (ovrAppThread *) parm;
|
||||
|
@ -1479,6 +1479,9 @@ void * AppThreadFunction(void * parm ) {
|
|||
//We are done, shutdown cleanly
|
||||
shutdownVR();
|
||||
|
||||
//Ask Java to shut down
|
||||
jni_shutdown();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -1711,9 +1714,26 @@ Activity lifecycle
|
|||
================================================================================
|
||||
*/
|
||||
|
||||
jmethodID android_shutdown;
|
||||
static JavaVM *jVM;
|
||||
static jobject shutdownCallbackObj=0;
|
||||
|
||||
void jni_shutdown()
|
||||
{
|
||||
ALOGV("Calling: jni_shutdown");
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
return (*env)->CallVoidMethod(env, shutdownCallbackObj, android_shutdown);
|
||||
}
|
||||
|
||||
int JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||
{
|
||||
JNIEnv *env;
|
||||
jVM = vm;
|
||||
if((*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_4) != JNI_OK)
|
||||
{
|
||||
ALOGE("Failed JNI_OnLoad");
|
||||
|
@ -1796,10 +1816,15 @@ JNIEXPORT jlong JNICALL Java_com_drbeef_questzdoom_GLES3JNILib_onCreate( JNIEnv
|
|||
}
|
||||
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_drbeef_questzdoom_GLES3JNILib_onStart( JNIEnv * env, jobject obj, jlong handle)
|
||||
JNIEXPORT void JNICALL Java_com_drbeef_questzdoom_GLES3JNILib_onStart( JNIEnv * env, jobject obj, jlong handle, jobject obj1)
|
||||
{
|
||||
ALOGV( " GLES3JNILib::onStart()" );
|
||||
|
||||
shutdownCallbackObj = (jobject)(*env)->NewGlobalRef(env, obj1);
|
||||
jclass callbackClass = (*env)->GetObjectClass(env, shutdownCallbackObj);
|
||||
|
||||
android_shutdown = (*env)->GetMethodID(env,callbackClass,"shutdown","()V");
|
||||
|
||||
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
|
||||
ovrMessage message;
|
||||
ovrMessage_Init( &message, MESSAGE_ON_START, MQ_WAIT_PROCESSED );
|
||||
|
|
|
@ -76,9 +76,7 @@ EXTERN_CVAR(Bool, vr_hud_fixed_roll);
|
|||
|
||||
double P_XYMovement(AActor *mo, DVector2 scroll);
|
||||
extern "C" void VR_GetMove( float *joy_forward, float *joy_side, float *hmd_forward, float *hmd_side, float *up, float *yaw, float *pitch, float *roll );
|
||||
void I_Quit();
|
||||
|
||||
extern int game_running;
|
||||
void ST_Endoom();
|
||||
|
||||
namespace s3d
|
||||
{
|
||||
|
@ -392,8 +390,7 @@ namespace s3d
|
|||
|
||||
if (shutdown)
|
||||
{
|
||||
game_running = false;
|
||||
I_Quit();
|
||||
ST_Endoom();
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -374,9 +374,11 @@ bool FTTYStartupScreen::NetLoop(bool (*timer_callback)(void *), void *userdata)
|
|||
}
|
||||
}
|
||||
|
||||
extern int game_running;
|
||||
extern bool wantToRestart;
|
||||
|
||||
void ST_Endoom()
|
||||
{
|
||||
I_ShutdownJoysticks();
|
||||
call_terms();
|
||||
exit(0);
|
||||
game_running = false;
|
||||
wantToRestart = true;
|
||||
}
|
||||
|
|
|
@ -351,9 +351,6 @@ OptionMenu "OptionsMenu" protected
|
|||
Submenu "$OPTMNU_NETWORK", "NetworkOptions"
|
||||
Submenu "$OPTMNU_SOUND", "SoundOptions"
|
||||
Submenu "$OPTMNU_DISPLAY", "VideoOptions"
|
||||
Submenu "$OPTMNU_CHANGERENDER", "RendererMenu"
|
||||
StaticText " "
|
||||
Submenu "$OS_TITLE", "os_Menu"
|
||||
StaticText " "
|
||||
SafeCommand "$OPTMNU_DEFAULTS", "reset2defaults"
|
||||
SafeCommand "$OPTMNU_RESETTOSAVED", "reset2saved"
|
||||
|
|
Binary file not shown.
|
@ -48,19 +48,12 @@ import android.support.v4.content.ContextCompat;
|
|||
private SurfaceHolder mSurfaceHolder;
|
||||
private long mNativeHandle;
|
||||
|
||||
// Main components
|
||||
protected static GLES3JNIActivity mSingleton;
|
||||
|
||||
// Audio
|
||||
protected static AudioTrack mAudioTrack;
|
||||
protected static AudioRecord mAudioRecord;
|
||||
|
||||
public static void initialize() {
|
||||
// The static nature of the singleton and Android quirkyness force us to initialize everything here
|
||||
// Otherwise, when exiting the app and returning to it, these variables *keep* their pre exit values
|
||||
mSingleton = null;
|
||||
mAudioTrack = null;
|
||||
mAudioRecord = null;
|
||||
public void shutdown() {
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
@Override protected void onCreate( Bundle icicle )
|
||||
|
@ -69,12 +62,6 @@ import android.support.v4.content.ContextCompat;
|
|||
Log.v( TAG, "GLES3JNIActivity::onCreate()" );
|
||||
super.onCreate( icicle );
|
||||
|
||||
GLES3JNIActivity.initialize();
|
||||
|
||||
// So we can call stuff from static callbacks
|
||||
mSingleton = this;
|
||||
|
||||
|
||||
mView = new SurfaceView( this );
|
||||
setContentView( mView );
|
||||
mView.getHolder().addCallback( this );
|
||||
|
@ -245,7 +232,7 @@ import android.support.v4.content.ContextCompat;
|
|||
Log.v( TAG, "GLES3JNIActivity::onStart()" );
|
||||
super.onStart();
|
||||
|
||||
GLES3JNILib.onStart( mNativeHandle );
|
||||
GLES3JNILib.onStart( mNativeHandle, this );
|
||||
}
|
||||
|
||||
@Override protected void onResume()
|
||||
|
@ -282,8 +269,6 @@ import android.support.v4.content.ContextCompat;
|
|||
GLES3JNILib.onDestroy( mNativeHandle );
|
||||
|
||||
super.onDestroy();
|
||||
// Reset everything in case the user re opens the app
|
||||
GLES3JNIActivity.initialize();
|
||||
mNativeHandle = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ public class GLES3JNILib
|
|||
{
|
||||
// Activity lifecycle
|
||||
public static native long onCreate( Activity obj, String commandLineParams );
|
||||
public static native void onStart( long handle );
|
||||
public static native void onStart( long handle, Object obj );
|
||||
public static native void onResume( long handle );
|
||||
public static native void onPause( long handle );
|
||||
public static native void onStop( long handle );
|
||||
|
|
Loading…
Reference in a new issue