diff --git a/services/surfaceflinger/LayerBase.cpp b/services/surfaceflinger/LayerBase.cpp index 5ae0ee0e6..d75dddd2b 100644 --- a/services/surfaceflinger/LayerBase.cpp +++ b/services/surfaceflinger/LayerBase.cpp @@ -232,10 +232,9 @@ void LayerBase::computeGeometry(const sp& hw, LayerMesh* me const Layer::State& s(drawingState()); const Transform tr(hw->getTransform() * s.transform); const uint32_t hw_h = hw->getHeight(); - const Rect& crop(s.active.crop); Rect win(s.active.w, s.active.h); - if (!crop.isEmpty()) { - win.intersect(crop, &win); + if (!s.active.crop.isEmpty()) { + win.intersect(s.active.crop, &win); } if (mesh) { tr.transform(mesh->mVertices[0], win.left, win.top); @@ -250,10 +249,9 @@ void LayerBase::computeGeometry(const sp& hw, LayerMesh* me Rect LayerBase::computeBounds() const { const Layer::State& s(drawingState()); - const Rect& crop(s.active.crop); Rect win(s.active.w, s.active.h); - if (!crop.isEmpty()) { - win.intersect(crop, &win); + if (!s.active.crop.isEmpty()) { + win.intersect(s.active.crop, &win); } return s.transform.transform(win); } @@ -400,14 +398,15 @@ void LayerBase::drawWithOpenGL(const sp& hw, const Region& GLfloat v; }; - Rect crop(s.active.w, s.active.h); + Rect win(s.active.w, s.active.h); if (!s.active.crop.isEmpty()) { - crop = s.active.crop; + win.intersect(s.active.crop, &win); } - GLfloat left = GLfloat(crop.left) / GLfloat(s.active.w); - GLfloat top = GLfloat(crop.top) / GLfloat(s.active.h); - GLfloat right = GLfloat(crop.right) / GLfloat(s.active.w); - GLfloat bottom = GLfloat(crop.bottom) / GLfloat(s.active.h); + + GLfloat left = GLfloat(win.left) / GLfloat(s.active.w); + GLfloat top = GLfloat(win.top) / GLfloat(s.active.h); + GLfloat right = GLfloat(win.right) / GLfloat(s.active.w); + GLfloat bottom = GLfloat(win.bottom) / GLfloat(s.active.h); TexCoords texCoords[4]; texCoords[0].u = left;