summaryrefslogtreecommitdiffstats
path: root/opengl
diff options
context:
space:
mode:
authorDaniel Lam <dalam@google.com>2012-04-16 22:21:02 -0700
committerDaniel Lam <dalam@google.com>2012-04-16 22:25:13 -0700
commit1cbcb98a2528ea0d8ce34dc35513859c7ef957f3 (patch)
treed344a1e6b84b831f6802825d3fad76257105bb75 /opengl
parent172a62a224967beee9e35e02a5b2fb2705dd2cc0 (diff)
downloadframeworks_native-1cbcb98a2528ea0d8ce34dc35513859c7ef957f3.zip
frameworks_native-1cbcb98a2528ea0d8ce34dc35513859c7ef957f3.tar.gz
frameworks_native-1cbcb98a2528ea0d8ce34dc35513859c7ef957f3.tar.bz2
Added an EGLTest for eglTerminate
This tests if eglTerminate can succeed while objects are leaked. Currently the test fails because of a deadlock. Change-Id: Ibe26edfda28691284d0674e803e8d3114f3ce4c6
Diffstat (limited to 'opengl')
-rw-r--r--opengl/tests/EGLTest/Android.mk1
-rw-r--r--opengl/tests/EGLTest/EGL_test.cpp32
2 files changed, 33 insertions, 0 deletions
diff --git a/opengl/tests/EGLTest/Android.mk b/opengl/tests/EGLTest/Android.mk
index d8e7012..d820875 100644
--- a/opengl/tests/EGLTest/Android.mk
+++ b/opengl/tests/EGLTest/Android.mk
@@ -15,6 +15,7 @@ LOCAL_SHARED_LIBRARIES := \
libcutils \
libstlport \
libutils \
+ libgui \
LOCAL_STATIC_LIBRARIES := \
libgtest \
diff --git a/opengl/tests/EGLTest/EGL_test.cpp b/opengl/tests/EGLTest/EGL_test.cpp
index 337ad33..d511cae 100644
--- a/opengl/tests/EGLTest/EGL_test.cpp
+++ b/opengl/tests/EGLTest/EGL_test.cpp
@@ -19,6 +19,9 @@
#include <utils/String8.h>
#include <EGL/egl.h>
+#include <gui/SurfaceTextureClient.h>
+#include <gui/DummyConsumer.h>
+
namespace android {
@@ -84,6 +87,35 @@ TEST_F(EGLTest, DISABLED_EGLConfigEightBitFirst) {
EXPECT_GE(components[2], 8);
}
+TEST_F(EGLTest, EGLTerminateSucceedsWithRemainingObjects) {
+ EGLint numConfigs;
+ EGLConfig config;
+ EGLint attrs[] = {
+ EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
+ EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
+ EGL_RED_SIZE, 8,
+ EGL_GREEN_SIZE, 8,
+ EGL_BLUE_SIZE, 8,
+ EGL_ALPHA_SIZE, 8,
+ EGL_NONE
+ };
+ EXPECT_TRUE(eglChooseConfig(mEglDisplay, attrs, &config, 1, &numConfigs));
+
+ // Create a EGLSurface
+ sp<BufferQueue> bq = new BufferQueue();
+ bq->consumerConnect(new DummyConsumer());
+ sp<SurfaceTextureClient> mSTC = new SurfaceTextureClient(static_cast<sp<ISurfaceTexture> >( bq));
+ sp<ANativeWindow> mANW = mSTC;
+
+ EGLSurface eglSurface = eglCreateWindowSurface(mEglDisplay, config,
+ mANW.get(), NULL);
+ ASSERT_EQ(EGL_SUCCESS, eglGetError());
+ ASSERT_NE(EGL_NO_SURFACE, eglSurface) ;
+
+ // do not destroy eglSurface
+ // eglTerminate is called in the tear down and should destroy it for us
+}
+
TEST_F(EGLTest, EGLConfigRGBA8888First) {
EGLint numConfigs;