Merge "fix a bug that caused the off animation to not show sometimes"

This commit is contained in:
Mathias Agopian
2011-09-02 15:31:20 -07:00
committed by Android (Google) Code Review
3 changed files with 24 additions and 2 deletions

View File

@@ -108,8 +108,21 @@ status_t HWComposer::commit() const {
} }
status_t HWComposer::release() const { status_t HWComposer::release() const {
int err = mHwc->set(mHwc, NULL, NULL, NULL); if (mHwc) {
return (status_t)err; int err = mHwc->set(mHwc, NULL, NULL, NULL);
return (status_t)err;
}
return NO_ERROR;
}
status_t HWComposer::disable() {
if (mHwc) {
free(mList);
mList = NULL;
int err = mHwc->prepare(mHwc, NULL);
return (status_t)err;
}
return NO_ERROR;
} }
size_t HWComposer::getNumLayers() const { size_t HWComposer::getNumLayers() const {

View File

@@ -50,6 +50,9 @@ public:
// Asks the HAL what it can do // Asks the HAL what it can do
status_t prepare() const; status_t prepare() const;
// disable hwc until next createWorkList
status_t disable();
// commits the list // commits the list
status_t commit() const; status_t commit() const;

View File

@@ -2113,6 +2113,12 @@ status_t SurfaceFlinger::turnElectronBeamOffImplLocked(int32_t mode)
// we're already off // we're already off
return NO_ERROR; return NO_ERROR;
} }
// turn off hwc while we're doing the animation
hw.getHwComposer().disable();
// and make sure to turn it back on (if needed) next time we compose
invalidateHwcGeometry();
if (mode & ISurfaceComposer::eElectronBeamAnimationOff) { if (mode & ISurfaceComposer::eElectronBeamAnimationOff) {
electronBeamOffAnimationImplLocked(); electronBeamOffAnimationImplLocked();
} }