From e8bf7dc4173eeee2fd181c47f7612f71e3d2048e Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 20 Apr 2011 17:39:44 +0800 Subject: [PATCH] surfaceflinger: notify gralloc about console events --- services/surfaceflinger/SurfaceFlinger.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index a9fa1ef42443..1db512513099 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -452,6 +452,16 @@ void SurfaceFlinger::handleConsoleEvents() { // something to do with the console const DisplayHardware& hw = graphicPlane(0).displayHardware(); + hw_module_t const* mod; + gralloc_module_t const* gr = NULL; + status_t err; + + err = hw_get_module(GRALLOC_HARDWARE_MODULE_ID, &mod); + if (!err) { + gr = reinterpret_cast(mod); + if (!gr->perform) + gr = NULL; + } int what = android_atomic_and(0, &mConsoleSignals); if (what & eConsoleAcquired) { @@ -459,16 +469,22 @@ void SurfaceFlinger::handleConsoleEvents() // this is a temporary work-around, eventually this should be called // by the power-manager SurfaceFlinger::turnElectronBeamOn(mElectronBeamAnimationMode); + if (gr) + gr->perform(gr, GRALLOC_MODULE_PERFORM_ENTER_VT); } if (mDeferReleaseConsole && hw.isScreenAcquired()) { // We got the release signal before the acquire signal mDeferReleaseConsole = false; + if (gr) + gr->perform(gr, GRALLOC_MODULE_PERFORM_LEAVE_VT); hw.releaseScreen(); } if (what & eConsoleReleased) { if (hw.isScreenAcquired()) { + if (gr) + gr->perform(gr, GRALLOC_MODULE_PERFORM_LEAVE_VT); hw.releaseScreen(); } else { mDeferReleaseConsole = true; -- 2.11.0