a0fef1c8bb
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 |
||
---|---|---|
.. | ||
EGL | ||
ETC1 | ||
GLES2 | ||
GLES_CM | ||
GLES_trace | ||
tools | ||
Android.mk | ||
debug.in | ||
egl_impl.h | ||
entries.in | ||
enums.in | ||
glestrace.h | ||
hooks.h | ||
trace.in |