From 9f3020db15e50d07ee1ace42e47d90b076f2ce54 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 6 Nov 2009 16:30:18 -0800 Subject: [PATCH] fix [2243164] live wallpaper screen artifacts at end of boot make sure to glClear() the areas not touched by the animation --- cmds/bootanimation/BootAnimation.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index b5b88f354e934..ce36c4b3320ae 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -437,6 +437,9 @@ bool BootAnimation::movie() nsecs_t lastFrame = systemTime(); nsecs_t frameDuration = s2ns(1) / animation.fps; + Region clearReg(Rect(mWidth, mHeight)); + clearReg.subtractSelf(Rect(xc, yc, xc+animation.width, yc+animation.height)); + for (int i=0 ; igetDataLength()); } + if (!clearReg.isEmpty()) { + Region::const_iterator head(clearReg.begin()); + Region::const_iterator tail(clearReg.end()); + glEnable(GL_SCISSOR_TEST); + while (head != tail) { + const Rect& r(*head++); + glScissor(r.left, mHeight - r.bottom, + r.width(), r.height()); + glClear(GL_COLOR_BUFFER_BIT); + } + glDisable(GL_SCISSOR_TEST); + } glDrawTexiOES(xc, yc, 0, animation.width, animation.height); eglSwapBuffers(mDisplay, mSurface);