From 3ee1c890b12b1f12a6dbefb1dac629330dc68fcf Mon Sep 17 00:00:00 2001 From: pelya Date: Sun, 12 Aug 2012 19:14:08 +0300 Subject: [PATCH] Change to the Recent Apps button behavior on Android 4.X - now it will delete OpenGL context, and freeze the app. --- project/java/MainActivity.java | 9 ++++++++- project/java/Video.java | 11 ++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/project/java/MainActivity.java b/project/java/MainActivity.java index 0449e9767..dbd0fb280 100644 --- a/project/java/MainActivity.java +++ b/project/java/MainActivity.java @@ -289,12 +289,19 @@ public class MainActivity extends Activity { @Override public void onWindowFocusChanged (boolean hasFocus) { super.onWindowFocusChanged(hasFocus); + System.out.println("libSDL: onWindowFocusChanged: " + hasFocus + " - sending onPause/onResume"); + if (hasFocus == false) + onPause(); + else + onResume(); + /* if (hasFocus == false) { synchronized(textInput) { // Send 'SDLK_PAUSE' (to enter pause mode) to native code: DemoRenderer.nativeTextInput( 19, 19 ); } } + */ } public boolean isPaused() @@ -303,7 +310,7 @@ public class MainActivity extends Activity { } @Override - protected void onDestroy() + protected void onDestroy() { if( downloader != null ) { diff --git a/project/java/Video.java b/project/java/Video.java index 28dee7bff..2576eee91 100644 --- a/project/java/Video.java +++ b/project/java/Video.java @@ -572,7 +572,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer } public void DrawLogo(GL10 gl) { - System.out.println("libSDL: DrawLogo"); + // TODO: this not quite works, as it seems BitmapDrawable bmp = null; try { @@ -645,6 +645,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer private boolean mGlContextLost = false; public boolean mGlSurfaceCreated = false; public boolean mPaused = false; + //public boolean mPutToBackground = false; private boolean mFirstTimeStart = true; public int mWidth = 0; public int mHeight = 0; @@ -699,10 +700,12 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL { @Override public void onPause() { + if(mRenderer.mPaused) + return; + mRenderer.mPaused = true; if( mRenderer.accelerometer != null ) // For some reason it crashes here often - are we getting this event before initialization? mRenderer.accelerometer.stop(); super.onPause(); - mRenderer.mPaused = true; }; public boolean isPaused() { @@ -711,8 +714,10 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL { @Override public void onResume() { - super.onResume(); + if(!mRenderer.mPaused) + return; mRenderer.mPaused = false; + super.onResume(); System.out.println("libSDL: DemoGLSurfaceView.onResume(): mRenderer.mGlSurfaceCreated " + mRenderer.mGlSurfaceCreated + " mRenderer.mPaused " + mRenderer.mPaused); if( mRenderer.mGlSurfaceCreated && ! mRenderer.mPaused || Globals.NonBlockingSwapBuffers ) mRenderer.nativeGlContextRecreated();