From 919139247ccf5ade7c24ec1a9499a377be5498c2 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 10 Oct 2011 22:18:55 -0700 Subject: [PATCH] fix an issue where the screen could stay off this would happen when toggling on/off/on very fast, the screen could stay black (while the panel is on). Bug: 5429724 Change-Id: Ic8aa6aff066e6267923c0d47ef65e314e7bb6d41 --- .../DisplayHardware/DisplayHardwareBase.cpp | 9 ++------- .../DisplayHardware/DisplayHardwareBase.h | 2 -- services/surfaceflinger/SurfaceFlinger.cpp | 11 ----------- services/surfaceflinger/SurfaceFlinger.h | 1 - 4 files changed, 2 insertions(+), 21 deletions(-) diff --git a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp index 59b7e5a7413b1..3b7c09e80a83f 100644 --- a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp +++ b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp @@ -122,7 +122,7 @@ status_t DisplayHardwareBase::DisplayEventThread::initCheck() const DisplayHardwareBase::DisplayHardwareBase(const sp& flinger, uint32_t displayIndex) - : mCanDraw(true), mScreenAcquired(true) + : mScreenAcquired(true) { mDisplayEventThread = new DisplayEventThread(flinger); } @@ -133,14 +133,9 @@ DisplayHardwareBase::~DisplayHardwareBase() mDisplayEventThread->requestExitAndWait(); } -void DisplayHardwareBase::setCanDraw(bool canDraw) -{ - mCanDraw = canDraw; -} - bool DisplayHardwareBase::canDraw() const { - return mCanDraw && mScreenAcquired; + return mScreenAcquired; } void DisplayHardwareBase::releaseScreen() const diff --git a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h index 3ebc7b6cc54df..ef2df432ce185 100644 --- a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h +++ b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.h @@ -43,7 +43,6 @@ public: bool isScreenAcquired() const; bool canDraw() const; - void setCanDraw(bool canDraw); private: @@ -74,7 +73,6 @@ private: }; sp mDisplayEventThread; - mutable int mCanDraw; mutable int mScreenAcquired; }; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index a778dcb06a6bd..195ad2eae4985 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -84,7 +84,6 @@ SurfaceFlinger::SurfaceFlinger() mBootTime(systemTime()), mVisibleRegionsDirty(false), mHwWorkListDirty(false), - mDeferReleaseConsole(false), mFreezeDisplay(false), mElectronBeamAnimationMode(0), mFreezeCount(0), @@ -503,17 +502,9 @@ void SurfaceFlinger::handleConsoleEvents() SurfaceFlinger::turnElectronBeamOn(mElectronBeamAnimationMode); } - if (mDeferReleaseConsole && hw.isScreenAcquired()) { - // We got the release signal before the acquire signal - mDeferReleaseConsole = false; - hw.releaseScreen(); - } - if (what & eConsoleReleased) { if (hw.isScreenAcquired()) { hw.releaseScreen(); - } else { - mDeferReleaseConsole = true; } } @@ -2177,7 +2168,6 @@ status_t SurfaceFlinger::turnElectronBeamOffImplLocked(int32_t mode) glEnable(GL_SCISSOR_TEST); hw.flip( Region(hw.bounds()) ); - hw.setCanDraw(false); return NO_ERROR; } @@ -2226,7 +2216,6 @@ status_t SurfaceFlinger::turnElectronBeamOnImplLocked(int32_t mode) if (mode & ISurfaceComposer::eElectronBeamAnimationOn) { electronBeamOnAnimationImplLocked(); } - hw.setCanDraw(true); // make sure to redraw the whole screen when the animation is done mDirtyRegion.set(hw.bounds()); diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 92b265ec8e2c6..1cb9be28acf45 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -363,7 +363,6 @@ private: Region mWormholeRegion; bool mVisibleRegionsDirty; bool mHwWorkListDirty; - bool mDeferReleaseConsole; bool mFreezeDisplay; int32_t mElectronBeamAnimationMode; int32_t mFreezeCount;