am e491ec7c: am 7589b2a7: add two libgui tests

* commit 'e491ec7c93adb9ec9cfab0f6c7604383aa58d08c':
  add two libgui tests
This commit is contained in:
Mathias Agopian 2013-03-08 22:50:24 +00:00 committed by Android Git Automerger
commit 9f13b4f694

View File

@ -1636,6 +1636,81 @@ TEST_F(SurfaceTextureGLToGLTest, EglDestroySurfaceAfterAbandonUnrefsBuffers) {
}
}
TEST_F(SurfaceTextureGLToGLTest, EglMakeCurrentBeforeConsumerDeathUnrefsBuffers) {
sp<GraphicBuffer> buffer;
EXPECT_TRUE(eglMakeCurrent(mEglDisplay, mProducerEglSurface,
mProducerEglSurface, mProducerEglContext));
// Produce a frame
glClear(GL_COLOR_BUFFER_BIT);
EXPECT_TRUE(eglSwapBuffers(mEglDisplay, mProducerEglSurface));
ASSERT_EQ(EGL_SUCCESS, eglGetError());
// Destroy the EGLSurface.
EXPECT_TRUE(eglDestroySurface(mEglDisplay, mProducerEglSurface));
ASSERT_EQ(EGL_SUCCESS, eglGetError());
mProducerEglSurface = EGL_NO_SURFACE;
mSTC.clear();
mANW.clear();
mTextureRenderer.clear();
// Consume a frame
ASSERT_EQ(NO_ERROR, mST->updateTexImage());
buffer = mST->getCurrentBuffer();
// Destroy the GL texture object to release its ref
GLuint texID = TEX_ID;
glDeleteTextures(1, &texID);
// make un-current, all references to buffer should be gone
EXPECT_TRUE(eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE,
EGL_NO_SURFACE, EGL_NO_CONTEXT));
// Destroy consumer
mST.clear();
EXPECT_EQ(1, buffer->getStrongCount());
}
TEST_F(SurfaceTextureGLToGLTest, EglMakeCurrentAfterConsumerDeathUnrefsBuffers) {
sp<GraphicBuffer> buffer;
EXPECT_TRUE(eglMakeCurrent(mEglDisplay, mProducerEglSurface,
mProducerEglSurface, mProducerEglContext));
// Produce a frame
glClear(GL_COLOR_BUFFER_BIT);
EXPECT_TRUE(eglSwapBuffers(mEglDisplay, mProducerEglSurface));
ASSERT_EQ(EGL_SUCCESS, eglGetError());
// Destroy the EGLSurface.
EXPECT_TRUE(eglDestroySurface(mEglDisplay, mProducerEglSurface));
ASSERT_EQ(EGL_SUCCESS, eglGetError());
mProducerEglSurface = EGL_NO_SURFACE;
mSTC.clear();
mANW.clear();
mTextureRenderer.clear();
// Consume a frame
ASSERT_EQ(NO_ERROR, mST->updateTexImage());
buffer = mST->getCurrentBuffer();
// Destroy the GL texture object to release its ref
GLuint texID = TEX_ID;
glDeleteTextures(1, &texID);
// Destroy consumer
mST.clear();
// make un-current, all references to buffer should be gone
EXPECT_TRUE(eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE,
EGL_NO_SURFACE, EGL_NO_CONTEXT));
EXPECT_EQ(1, buffer->getStrongCount());
}
TEST_F(SurfaceTextureGLToGLTest, EglSurfaceDefaultsToSynchronousMode) {
// This test requires 3 buffers to run on a single thread.
mST->setDefaultMaxBufferCount(3);