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

Commit 1cbcb98a authored by Daniel Lam's avatar Daniel Lam
Browse files

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
parent 172a62a2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ LOCAL_SHARED_LIBRARIES := \
	libcutils \
	libstlport \
	libutils \
	libgui \

LOCAL_STATIC_LIBRARIES := \
	libgtest \
+32 −0
Original line number Diff line number Diff line
@@ -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;