summaryrefslogtreecommitdiffstats
path: root/opengl/tests/testPauseResume
diff options
context:
space:
mode:
authorJack Palevich <jackpal@google.com>2010-03-29 12:09:57 -0700
committerJack Palevich <jackpal@google.com>2010-03-29 12:09:57 -0700
commitdaf5537350c10c538d0a38567b5434f5cfb2d378 (patch)
treec3b227142640dd4e2f049703d5ed0166711c823b /opengl/tests/testPauseResume
parent4a4f9886a789ece80f127397c1c7ad7f543b78fa (diff)
downloadframeworks_base-daf5537350c10c538d0a38567b5434f5cfb2d378.zip
frameworks_base-daf5537350c10c538d0a38567b5434f5cfb2d378.tar.gz
frameworks_base-daf5537350c10c538d0a38567b5434f5cfb2d378.tar.bz2
Add a test of EGL pausing and resuming.
Diffstat (limited to 'opengl/tests/testPauseResume')
-rw-r--r--opengl/tests/testPauseResume/Android.mk22
-rw-r--r--opengl/tests/testPauseResume/AndroidManifest.xml38
-rw-r--r--opengl/tests/testPauseResume/README37
-rw-r--r--opengl/tests/testPauseResume/res/values/strings.xml29
-rw-r--r--opengl/tests/testPauseResume/src/com/android/test/TestActivity.java64
-rw-r--r--opengl/tests/testPauseResume/src/com/android/test/TestView.java84
6 files changed, 274 insertions, 0 deletions
diff --git a/opengl/tests/testPauseResume/Android.mk b/opengl/tests/testPauseResume/Android.mk
new file mode 100644
index 0000000..450473a
--- /dev/null
+++ b/opengl/tests/testPauseResume/Android.mk
@@ -0,0 +1,22 @@
+#########################################################################
+# OpenGL ES JNI sample
+# This makefile builds both an activity and a shared library.
+#########################################################################
+ifneq ($(TARGET_SIMULATOR),true) # not 64 bit clean
+
+TOP_LOCAL_PATH:= $(call my-dir)
+
+# Build activity
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-subdir-java-files)
+
+LOCAL_PACKAGE_NAME := TestEGL
+
+include $(BUILD_PACKAGE)
+
+endif # TARGET_SIMULATOR
diff --git a/opengl/tests/testPauseResume/AndroidManifest.xml b/opengl/tests/testPauseResume/AndroidManifest.xml
new file mode 100644
index 0000000..3e8e7e7
--- /dev/null
+++ b/opengl/tests/testPauseResume/AndroidManifest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2009, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.test">
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <application
+ android:label="@string/test_activity">
+ <activity android:name="TestActivity"
+ android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+ android:launchMode="singleTask"
+ android:screenOrientation="landscape"
+ android:configChanges="orientation|keyboardHidden">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
diff --git a/opengl/tests/testPauseResume/README b/opengl/tests/testPauseResume/README
new file mode 100644
index 0000000..87db74a
--- /dev/null
+++ b/opengl/tests/testPauseResume/README
@@ -0,0 +1,37 @@
+Repro steps:
+
+build, install and run the attached test program TestEgl.apk
+
+The program does not draw anything to the screen, it just prints to the log, so use adb logcat to watch the output.
+
+Expected behavior:
+
+constantly increasing "step" count:
+
+
+W/TestActivity( 1885): ****** step 235 resume
+W/TestActivity( 1885): step 236 pause
+W/TestActivity( 1885): ****** step 236 resume
+
+and so on.
+
+Actual behavior:
+
+W/TestActivity( 1466): ****** step 25 resume
+W/TestActivity( 1466): step 26 pause
+W/TestActivity( 1466): ****** step 26 resume
+W/dalvikvm( 1466): threadid=8: thread exiting with uncaught exception (group=0x4001d7f0)
+E/AndroidRuntime( 1466): FATAL EXCEPTION: GLThread 9
+E/AndroidRuntime( 1466): java.lang.RuntimeException: createContext failed: EGL_BAD_ALLOC
+E/AndroidRuntime( 1466): at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1067)
+E/AndroidRuntime( 1466): at android.opengl.GLSurfaceView$EglHelper.throwEglException(GLSurfaceView.java:1059)
+E/AndroidRuntime( 1466): at android.opengl.GLSurfaceView$EglHelper.start(GLSurfaceView.java:925)
+E/AndroidRuntime( 1466): at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1236)
+E/AndroidRuntime( 1466): at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1106)
+W/TestActivity( 1466): step 27 pause
+W/TestActivity( 1466): ****** step 27 resume
+W/TestActivity( 1466): step 28 pause
+W/TestActivity( 1466): ****** step 28 resume
+
+
+See http://b/issue?id=2550745 for further details.
diff --git a/opengl/tests/testPauseResume/res/values/strings.xml b/opengl/tests/testPauseResume/res/values/strings.xml
new file mode 100644
index 0000000..208fe15
--- /dev/null
+++ b/opengl/tests/testPauseResume/res/values/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2006, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- This file contains resource definitions for displayed strings, allowing
+ them to be changed based on the locale and options. -->
+
+<resources>
+ <!-- Simple strings. -->
+ <string name="test_activity">Test Egl</string>
+
+</resources>
+
diff --git a/opengl/tests/testPauseResume/src/com/android/test/TestActivity.java b/opengl/tests/testPauseResume/src/com/android/test/TestActivity.java
new file mode 100644
index 0000000..9dc7132
--- /dev/null
+++ b/opengl/tests/testPauseResume/src/com/android/test/TestActivity.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+
+public class TestActivity extends Activity {
+ private final static String TAG = "TestActivity";
+ TestView mView;
+ boolean mToggle;
+ int mCount;
+ final static int PAUSE_DELAY = 100;
+ Runnable mRunnable = new Runnable() {
+ public void run() {
+ if (mToggle) {
+ Log.w(TAG, "****** step " + mCount + " resume");
+ mCount++;
+ mView.onResume();
+ } else {
+ Log.w(TAG, "step " + mCount + " pause");
+ mView.onPause();
+ }
+ mToggle = ! mToggle;
+ mView.postDelayed(mRunnable, PAUSE_DELAY);
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ mView = new TestView(getApplication());
+ mView.setFocusableInTouchMode(true);
+ setContentView(mView);
+ mView.postDelayed(mRunnable, PAUSE_DELAY);
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ mView.onPause();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ mView.onResume();
+ }
+}
diff --git a/opengl/tests/testPauseResume/src/com/android/test/TestView.java b/opengl/tests/testPauseResume/src/com/android/test/TestView.java
new file mode 100644
index 0000000..8c28f13
--- /dev/null
+++ b/opengl/tests/testPauseResume/src/com/android/test/TestView.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.test;
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+import android.content.Context;
+import android.opengl.GLSurfaceView;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+
+import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.opengles.GL10;
+/**
+ * An implementation of SurfaceView that uses the dedicated surface for
+ * displaying an OpenGL animation. This allows the animation to run in a
+ * separate thread, without requiring that it be driven by the update mechanism
+ * of the view hierarchy.
+ *
+ * The application-specific rendering code is delegated to a GLView.Renderer
+ * instance.
+ */
+class TestView extends GLSurfaceView {
+ TestView(Context context) {
+ super(context);
+ init();
+ }
+
+ public TestView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ private void init() {
+ setRenderer(new Renderer());
+ }
+
+ private class Renderer implements GLSurfaceView.Renderer {
+ private static final String TAG = "Renderer";
+ public void onDrawFrame(GL10 gl) {
+ // Do nothing.
+ }
+
+ public void onSurfaceChanged(GL10 gl, int width, int height) {
+ // Do nothing.
+ }
+
+ public void onSurfaceCreated(GL10 gl, EGLConfig config) {
+ // Do nothing.
+ }
+ }
+}
+