Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b140981 authored by Jack Palevich's avatar Jack Palevich
Browse files

Add a test of EGL pausing and resuming.

parent 7416faf4
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
#########################################################################
# 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
+38 −0
Original line number Diff line number Diff line
<?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>
+37 −0
Original line number Diff line number Diff line
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.
+29 −0
Original line number Diff line number Diff line
<?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>
+64 −0
Original line number Diff line number Diff line
/*
 * 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();
    }
}
Loading