OSDN Git Service

Android: Fixed deadlock in AndroidHarness.onDestroy() and added screenOrientation
authorkimxilxyong <kimxilxyong@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Thu, 30 Jun 2011 18:24:31 +0000 (18:24 +0000)
committerkimxilxyong <kimxilxyong@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Thu, 30 Jun 2011 18:24:31 +0000 (18:24 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@7791 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/android/com/jme3/app/AndroidHarness.java

index 7f011a7..a75fe1a 100644 (file)
@@ -5,6 +5,7 @@ import java.util.logging.Logger;
 import android.app.Activity;\r
 import android.app.AlertDialog;\r
 import android.content.DialogInterface;\r
+import android.content.pm.ActivityInfo;\r
 import android.opengl.GLSurfaceView;\r
 import android.os.Bundle;\r
 import android.view.SurfaceView;\r
@@ -64,10 +65,24 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
      */\r
     protected String exitDialogMessage = "Use your home key to bring this app into the background or exit to terminate it.";\r
 \r
+    /**\r
+     * Set the screen orientation, default is SENSOR\r
+     * ActivityInfo.SCREEN_ORIENTATION_* constants\r
+     * package android.content.pm.ActivityInfo\r
+     *  \r
+     *   SCREEN_ORIENTATION_UNSPECIFIED\r
+     *   SCREEN_ORIENTATION_LANDSCAPE\r
+     *   SCREEN_ORIENTATION_PORTRAIT\r
+     *   SCREEN_ORIENTATION_USER\r
+     *   SCREEN_ORIENTATION_BEHIND\r
+     *   SCREEN_ORIENTATION_SENSOR (default)\r
+     *   SCREEN_ORIENTATION_NOSENSOR\r
+     */\r
+    protected int screenOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR;\r
           \r
     protected OGLESContext ctx;\r
     protected GLSurfaceView view;\r
-    \r
+    protected boolean isGLThreadPaused = true;\r
     final private String ESCAPE_EVENT = "TouchEscape"; \r
 \r
     @Override\r
@@ -81,7 +96,9 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
         requestWindowFeature(Window.FEATURE_NO_TITLE);\r
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,\r
         WindowManager.LayoutParams.FLAG_FULLSCREEN);\r
-\r
+        \r
+        setRequestedOrientation(screenOrientation);\r
+                     \r
         AppSettings settings = new AppSettings(true);\r
         AndroidInput input = new AndroidInput(this);\r
                 \r
@@ -110,7 +127,8 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
 \r
 \r
     @Override\r
-    protected void onRestart(){\r
+    protected void onRestart()\r
+    {\r
         super.onRestart(); \r
         if (app != null)\r
             app.restart();\r
@@ -119,37 +137,44 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
     \r
 \r
     @Override\r
-    protected void onStart(){\r
+    protected void onStart()\r
+    {\r
         super.onStart();\r
         logger.info("onStart");\r
     }\r
     \r
     @Override\r
-    protected void onResume() {\r
+    protected void onResume() \r
+    {\r
         super.onResume();\r
         if (view != null)\r
             view.onResume();\r
+        isGLThreadPaused = false;\r
         logger.info("onResume");\r
     }\r
 \r
     @Override\r
-    protected void onPause() {\r
+    protected void onPause() \r
+    {\r
         super.onPause();\r
         if (view != null)\r
             view.onPause();\r
+        isGLThreadPaused = true;\r
         logger.info("onPause");\r
     }\r
     \r
     @Override\r
-    protected void onStop(){\r
+    protected void onStop()\r
+    {\r
         super.onStop();\r
         logger.info("onStop");\r
     }\r
 \r
     @Override\r
-    protected void onDestroy(){\r
+    protected void onDestroy()\r
+    {\r
         if (app != null)\r
-            app.stop(true);\r
+            app.stop(! isGLThreadPaused);\r
         super.onDestroy();                \r
         logger.info("onDestroy");\r
     }\r