From 578b7a2265555655a8a70e8a2d621e906c9c9be0 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Wed, 19 Jan 2011 16:42:02 -0800 Subject: fix [3367893] Rotating device on YouTube's home screen several times kills system_server A typo in RS tear down cause caused eglMakeCurrent to fail. Additionnaly, EGLSurfaces where not destroyed explicitely. Everything worked properly when only one RS context was used, as eglTerminate() would clean-up everything. however in the present case, there seem to be more than one RS context and eglTerminate() is not called. Change-Id: I37a10945b9c0a85c4f7abad1c4f4c24bc0daa0a5 --- libs/rs/rsContext.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'libs/rs/rsContext.cpp') diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index 2e0c491c34ef..98f30ae4ead7 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -253,7 +253,11 @@ void Context::deinitEGL() { LOGV("%p, deinitEGL", this); if (mEGL.mContext != EGL_NO_CONTEXT) { - eglMakeCurrent(mEGL.mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, mEGL.mContext); + eglMakeCurrent(mEGL.mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + eglDestroySurface(mEGL.mDisplay, mEGL.mSurfaceDefault); + if (mEGL.mSurface != EGL_NO_SURFACE) { + eglDestroySurface(mEGL.mDisplay, mEGL.mSurface); + } eglDestroyContext(mEGL.mDisplay, mEGL.mContext); checkEglError("eglDestroyContext"); } -- cgit v1.2.3-59-g8ed1b