Change to the Recent Apps button behavior on Android 4.X - now it will delete OpenGL context, and freeze the app.

This commit is contained in:
pelya
2012-08-12 19:14:08 +03:00
parent 4ccba0347a
commit 3ee1c890b1
2 changed files with 16 additions and 4 deletions

View File

@@ -289,12 +289,19 @@ public class MainActivity extends Activity {
@Override @Override
public void onWindowFocusChanged (boolean hasFocus) { public void onWindowFocusChanged (boolean hasFocus) {
super.onWindowFocusChanged(hasFocus); super.onWindowFocusChanged(hasFocus);
System.out.println("libSDL: onWindowFocusChanged: " + hasFocus + " - sending onPause/onResume");
if (hasFocus == false)
onPause();
else
onResume();
/*
if (hasFocus == false) { if (hasFocus == false) {
synchronized(textInput) { synchronized(textInput) {
// Send 'SDLK_PAUSE' (to enter pause mode) to native code: // Send 'SDLK_PAUSE' (to enter pause mode) to native code:
DemoRenderer.nativeTextInput( 19, 19 ); DemoRenderer.nativeTextInput( 19, 19 );
} }
} }
*/
} }
public boolean isPaused() public boolean isPaused()
@@ -303,7 +310,7 @@ public class MainActivity extends Activity {
} }
@Override @Override
protected void onDestroy() protected void onDestroy()
{ {
if( downloader != null ) if( downloader != null )
{ {

View File

@@ -572,7 +572,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
} }
public void DrawLogo(GL10 gl) public void DrawLogo(GL10 gl)
{ {
System.out.println("libSDL: DrawLogo"); // TODO: this not quite works, as it seems
BitmapDrawable bmp = null; BitmapDrawable bmp = null;
try try
{ {
@@ -645,6 +645,7 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer
private boolean mGlContextLost = false; private boolean mGlContextLost = false;
public boolean mGlSurfaceCreated = false; public boolean mGlSurfaceCreated = false;
public boolean mPaused = false; public boolean mPaused = false;
//public boolean mPutToBackground = false;
private boolean mFirstTimeStart = true; private boolean mFirstTimeStart = true;
public int mWidth = 0; public int mWidth = 0;
public int mHeight = 0; public int mHeight = 0;
@@ -699,10 +700,12 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
@Override @Override
public void onPause() { 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? if( mRenderer.accelerometer != null ) // For some reason it crashes here often - are we getting this event before initialization?
mRenderer.accelerometer.stop(); mRenderer.accelerometer.stop();
super.onPause(); super.onPause();
mRenderer.mPaused = true;
}; };
public boolean isPaused() { public boolean isPaused() {
@@ -711,8 +714,10 @@ class DemoGLSurfaceView extends GLSurfaceView_SDL {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); if(!mRenderer.mPaused)
return;
mRenderer.mPaused = false; mRenderer.mPaused = false;
super.onResume();
System.out.println("libSDL: DemoGLSurfaceView.onResume(): mRenderer.mGlSurfaceCreated " + mRenderer.mGlSurfaceCreated + " mRenderer.mPaused " + mRenderer.mPaused); System.out.println("libSDL: DemoGLSurfaceView.onResume(): mRenderer.mGlSurfaceCreated " + mRenderer.mGlSurfaceCreated + " mRenderer.mPaused " + mRenderer.mPaused);
if( mRenderer.mGlSurfaceCreated && ! mRenderer.mPaused || Globals.NonBlockingSwapBuffers ) if( mRenderer.mGlSurfaceCreated && ! mRenderer.mPaused || Globals.NonBlockingSwapBuffers )
mRenderer.nativeGlContextRecreated(); mRenderer.nativeGlContextRecreated();