diff options
| author | 2011-10-10 22:18:55 -0700 | |
|---|---|---|
| committer | 2011-10-10 22:18:55 -0700 | |
| commit | 919139247ccf5ade7c24ec1a9499a377be5498c2 (patch) | |
| tree | aca54f8ec378483be0d9a842261b2f4f1313c4bc | |
| parent | b946a56b696674f6d6f399f68df38ec18adebe87 (diff) | |
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
4 files changed, 2 insertions, 21 deletions
diff --git a/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp b/services/surfaceflinger/DisplayHardware/DisplayHardwareBase.cpp index 59b7e5a7413b..3b7c09e80a83 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<SurfaceFlinger>& 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 3ebc7b6cc54d..ef2df432ce18 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<DisplayEventThreadBase> mDisplayEventThread; - mutable int mCanDraw; mutable int mScreenAcquired; }; diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index a778dcb06a6b..195ad2eae498 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 92b265ec8e2c..1cb9be28acf4 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; |