From 55801e41e6d7306d75d8134dd69d7d8cbbfbc63c Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 27 Aug 2012 18:54:24 -0700 Subject: [PATCH] we were not always clearing the screen properly Change-Id: I269dd866e965aebd9b3c4667095818202982f4a3 --- services/surfaceflinger/SurfaceFlinger.cpp | 23 +++++++++++----------- services/surfaceflinger/SurfaceFlinger.h | 3 ++- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 09ade121b..da3e93280 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -1288,7 +1288,7 @@ void SurfaceFlinger::doComposeSurfaces(const sp& hw, const // screen is already cleared here if (!region.isEmpty()) { // can happen with SurfaceView - drawWormhole(region); + drawWormhole(hw, region); } } @@ -1328,27 +1328,26 @@ void SurfaceFlinger::doComposeSurfaces(const sp& hw, const } } -void SurfaceFlinger::drawWormhole(const Region& region) const +void SurfaceFlinger::drawWormhole(const sp& hw, + const Region& region) const { glDisable(GL_TEXTURE_EXTERNAL_OES); glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); glColor4f(0,0,0,0); - GLfloat vertices[4][2]; - glVertexPointer(2, GL_FLOAT, 0, vertices); + const int32_t height = hw->getHeight(); Region::const_iterator it = region.begin(); Region::const_iterator const end = region.end(); while (it != end) { const Rect& r = *it++; - vertices[0][0] = r.left; - vertices[0][1] = r.top; - vertices[1][0] = r.right; - vertices[1][1] = r.top; - vertices[2][0] = r.right; - vertices[2][1] = r.bottom; - vertices[3][0] = r.left; - vertices[3][1] = r.bottom; + GLfloat vertices[][2] = { + { r.left, height - r.top }, + { r.left, height - r.bottom }, + { r.right, height - r.bottom }, + { r.right, height - r.top } + }; + glVertexPointer(2, GL_FLOAT, 0, vertices); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } } diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index f0af3d645..50fef009d 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -367,7 +367,8 @@ private: const Region& dirty); void postFramebuffer(); - void drawWormhole(const Region& region) const; + void drawWormhole(const sp& hw, + const Region& region) const; GLuint getProtectedTexName() const { return mProtectedTexName; }