replicant-frameworks_native/opengl/libs/EGL
Jesse Hall a0fef1c8bb Fix deadlock when cleaning objects in eglTerminate
When eglTerminate() is called with a window surface still exists, a
deadlock would occur since egl_display_t::terminate() holds a lock
while destroying the window surface, which calls
onWindowSurfaceDestroyed() which attempts to take the same lock.

This change refactors the hibernation code and data into a separate
object with its own lock, separate from the egl_display_t lock. This
avoids the deadlock and better encapsulates the hibernation logic.

The change also fixes a bug discovered incidentally while debugging:
hibernating after calling eglTerminate() succeeds, but will cause
awakens from subsequent eglInitialize() to fail. We will no longer
hibernate a terminated display.

Change-Id: If55e5bb603d4f8953babc439ffc8d8a60af103d9
2012-04-17 14:52:13 -07:00
..
egl_cache.cpp remove multiplexing of multiple EGL implementation 2012-02-13 18:11:42 -08:00
egl_cache.h
egl_display.cpp Fix deadlock when cleaning objects in eglTerminate 2012-04-17 14:52:13 -07:00
egl_display.h Fix deadlock when cleaning objects in eglTerminate 2012-04-17 14:52:13 -07:00
egl_entries.in Hibernate the EGL implementation when idle 2012-04-09 21:36:17 -07:00
egl_object.cpp Hibernate the EGL implementation when idle 2012-04-09 21:36:17 -07:00
egl_object.h Hibernate the EGL implementation when idle 2012-04-09 21:36:17 -07:00
egl_tls.cpp Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE 2012-01-08 13:19:13 +00:00
egl_tls.h
egl.cpp Increment/decrement a counter around EGL calls 2012-04-09 21:35:17 -07:00
eglApi.cpp Hibernate the EGL implementation when idle 2012-04-09 21:36:17 -07:00
egldefs.h EGLConfig is now not remaped to an internal EGLConfig 2012-02-13 20:23:15 -08:00
getProcAddress.cpp add all needed GL extension wrappers 2012-01-30 17:40:29 -08:00
Loader.cpp EGLConfig is now not remaped to an internal EGLConfig 2012-02-13 20:23:15 -08:00
Loader.h remove multiplexing of multiple EGL implementation 2012-02-13 18:11:42 -08:00
trace.cpp Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF) DO NOT MERGE 2012-01-03 22:38:27 +00:00