diff --git a/opengl/libs/Android.mk b/opengl/libs/Android.mk index 66bc64dd4..c5c261845 100644 --- a/opengl/libs/Android.mk +++ b/opengl/libs/Android.mk @@ -36,6 +36,10 @@ LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES LOCAL_CFLAGS += -fvisibility=hidden LOCAL_CFLAGS += -DEGL_TRACE=1 +ifeq ($(BOARD_ALLOW_EGL_HIBERNATION),true) + LOCAL_CFLAGS += -DBOARD_ALLOW_EGL_HIBERNATION +endif + ifeq ($(TARGET_BOARD_PLATFORM),msm7k) LOCAL_CFLAGS += -DADRENO130=1 endif diff --git a/opengl/libs/EGL/egl_display.cpp b/opengl/libs/EGL/egl_display.cpp index f2e3897bc..2cd1a938c 100644 --- a/opengl/libs/EGL/egl_display.cpp +++ b/opengl/libs/EGL/egl_display.cpp @@ -420,7 +420,7 @@ void egl_display_t::HibernationMachine::decWakeCount(WakeRefStrength strength) { if (mWakeCount == 0 && CC_UNLIKELY(mAttemptHibernation)) { egl_connection_t* const cnx = &gEGLImpl; mAttemptHibernation = false; - if (mDpyValid && + if (mAllowHibernation && mDpyValid && cnx->egl.eglHibernateProcessIMG && cnx->egl.eglAwakenProcessIMG) { ALOGV("Hibernating\n"); diff --git a/opengl/libs/EGL/egl_display.h b/opengl/libs/EGL/egl_display.h index 412568bf4..7bb09a3bb 100644 --- a/opengl/libs/EGL/egl_display.h +++ b/opengl/libs/EGL/egl_display.h @@ -155,7 +155,12 @@ private: }; HibernationMachine(): mWakeCount(0), mHibernating(false), - mAttemptHibernation(false), mDpyValid(false) + mAttemptHibernation(false), mDpyValid(false), +#if BOARD_ALLOW_EGL_HIBERNATION + mAllowHibernation(true) +#else + mAllowHibernation(false) +#endif {} ~HibernationMachine() {} @@ -165,11 +170,12 @@ private: void setDisplayValid(bool valid); private: - Mutex mLock; - int32_t mWakeCount; - bool mHibernating; - bool mAttemptHibernation; - bool mDpyValid; + Mutex mLock; + int32_t mWakeCount; + bool mHibernating; + bool mAttemptHibernation; + bool mDpyValid; + const bool mAllowHibernation; }; HibernationMachine mHibernation; };