diff options
author | Sven Gothel <[email protected]> | 2012-08-23 21:09:23 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-08-23 21:09:23 +0200 |
commit | 8516fe0358805e8549a96cde785dfa7ac2576e87 (patch) | |
tree | f4d4a3d50b4da5ff7cc750fa43246f007611d7e7 | |
parent | ab3ec08822e7958943686a7ba5157a4ff314e7ac (diff) |
Fix Android Power-suspend and Power-resume
NewtBaseActivity onPause()/onResume(): add setVisible(..) allowing recreation and avoid usage of unavail resources
- crucial for power suspend/resume, which itself calls activity onPause()/onResume(),
this ensures resources are not used onPause().
- Animator suspend is not sufficient due to surfaceRedrawNeeded(..) hook etc ..
- iff power suspend leads to surfaceDestroyed(..), recreation is now possible due to setVisible(true) on onResume()
even though I have not observed this on Android 2.3 and 4.0.1
Tested on Android 2.3 and Android 4.0.1
-rw-r--r-- | src/newt/classes/jogamp/newt/driver/android/NewtBaseActivity.java | 15 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java | 8 |
2 files changed, 14 insertions, 9 deletions
diff --git a/src/newt/classes/jogamp/newt/driver/android/NewtBaseActivity.java b/src/newt/classes/jogamp/newt/driver/android/NewtBaseActivity.java index 91c589beb..28c4da72f 100644 --- a/src/newt/classes/jogamp/newt/driver/android/NewtBaseActivity.java +++ b/src/newt/classes/jogamp/newt/driver/android/NewtBaseActivity.java @@ -265,16 +265,17 @@ public class NewtBaseActivity extends Activity { if(!isDelegatedActivity()) { super.onResume(); } - if(null != animator) { - animator.resume(); - animator.resetFPSCounter(); - } - for(int i=newtWindows.size()-1; i>=0; i--) { + for(int i=0; i<newtWindows.size(); i++) { final Window win = newtWindows.get(i); + win.setVisible(true); if(win instanceof FPSCounter) { ((FPSCounter)win).resetFPSCounter(); } } + if(null != animator) { + animator.resume(); + animator.resetFPSCounter(); + } } @Override @@ -283,6 +284,10 @@ public class NewtBaseActivity extends Activity { if(null != animator) { animator.pause(); } + for(int i=0; i<newtWindows.size(); i++) { + final Window win = newtWindows.get(i); + win.setVisible(false); + } if(!isDelegatedActivity()) { super.onPause(); } diff --git a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java b/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java index 907be5092..415efc7f2 100644 --- a/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java +++ b/src/test/com/jogamp/opengl/test/android/NEWTGearsES2ActivityLauncher.java @@ -53,10 +53,10 @@ public class NEWTGearsES2ActivityLauncher extends LauncherUtil.BaseActivityLaunc props.setProperty("jogl.debug.GLContext", "true"); props.setProperty("jogl.debug.GLSLCode", "true"); // props.setProperty("jogl.debug.CapabilitiesChooser", "true"); - // properties.setProperty("jogl.debug.GLSLState", "true"); - // properties.setProperty("jogl.debug.DebugGL", "true"); - // properties.setProperty("jogl.debug.TraceGL", "true"); - // properties.setProperty("newt.debug", "all"); + // props.setProperty("jogl.debug.GLSLState", "true"); + // props.setProperty("jogl.debug.DebugGL", "true"); + // props.setProperty("jogl.debug.TraceGL", "true"); + // props.setProperty("newt.debug", "all"); // props.setProperty("newt.debug.Window", "true"); // props.setProperty("newt.debug.Window.MouseEvent", "true"); props.setProperty("newt.debug.Window.KeyEvent", "true"); |