From a7f0373533e590fdca1400f90e6657ebb2dd5f17 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 14 Oct 2010 12:46:24 -0700 Subject: [PATCH] fix [3095607] Gingerbread screen turn-on animation does not show the last frame always redraw the screen entirely after the power-on animation, because: - the animation may not run (ie: on the emu) - the animation may not contain the video planes - the interpolation may not be perfect and not land exactly on the last frame Change-Id: I9ba40f537b1e94464f8a3ed6f81e7c2f552df51d --- services/surfaceflinger/SurfaceFlinger.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 073ce01ac..a975480ce 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1915,9 +1915,6 @@ status_t SurfaceFlinger::turnElectronBeamOffImplLocked() status_t SurfaceFlinger::turnElectronBeamOff(int32_t mode) { - if (!GLExtensions::getInstance().haveFramebufferObject()) - return INVALID_OPERATION; - class MessageTurnElectronBeamOff : public MessageBase { SurfaceFlinger* flinger; status_t result; @@ -1959,14 +1956,16 @@ status_t SurfaceFlinger::turnElectronBeamOnImplLocked() } electronBeamOnAnimationImplLocked(); hw.setCanDraw(true); + + // make sure to redraw the whole screen when the animation is done + mDirtyRegion.set(hw.bounds()); + signalEvent(); + return NO_ERROR; } status_t SurfaceFlinger::turnElectronBeamOn(int32_t mode) { - if (!GLExtensions::getInstance().haveFramebufferObject()) - return INVALID_OPERATION; - class MessageTurnElectronBeamOn : public MessageBase { SurfaceFlinger* flinger; status_t result;