diff options
author | Daniel Lam <dalam@google.com> | 2012-04-16 22:21:02 -0700 |
---|---|---|
committer | Daniel Lam <dalam@google.com> | 2012-04-16 22:25:13 -0700 |
commit | 1cbcb98a2528ea0d8ce34dc35513859c7ef957f3 (patch) | |
tree | d344a1e6b84b831f6802825d3fad76257105bb75 /opengl | |
parent | 172a62a224967beee9e35e02a5b2fb2705dd2cc0 (diff) | |
download | frameworks_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.mk | 1 | ||||
-rw-r--r-- | opengl/tests/EGLTest/EGL_test.cpp | 32 |
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; |