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
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
egl_object.cpp
egl_object.h
egl_tls.cpp
egl_tls.h
egl.cpp
eglApi.cpp
egldefs.h
getProcAddress.cpp
Loader.cpp
Loader.h
trace.cpp