From 772687d24206e2fa2deebf0980a932573a624b17 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Mon, 22 Jun 2015 14:51:18 -0700 Subject: [PATCH] Avoid flushing DisplayListCanvas state for noop calls bug:22006795 Change-Id: I2eceee69772b08f5319ea882be429a5b36860b7d --- libs/hwui/DisplayListCanvas.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libs/hwui/DisplayListCanvas.cpp b/libs/hwui/DisplayListCanvas.cpp index 843c412c156c3..02a4877b08287 100644 --- a/libs/hwui/DisplayListCanvas.cpp +++ b/libs/hwui/DisplayListCanvas.cpp @@ -135,6 +135,8 @@ int DisplayListCanvas::saveLayer(float left, float top, float right, float botto } void DisplayListCanvas::translate(float dx, float dy) { + if (dx == 0.0f && dy == 0.0f) return; + mHasDeferredTranslate = true; mTranslateX += dx; mTranslateY += dy; @@ -143,11 +145,15 @@ void DisplayListCanvas::translate(float dx, float dy) { } void DisplayListCanvas::rotate(float degrees) { + if (degrees == 0.0f) return; + addStateOp(new (alloc()) RotateOp(degrees)); mState.rotate(degrees); } void DisplayListCanvas::scale(float sx, float sy) { + if (sx == 1.0f && sy == 1.0f) return; + addStateOp(new (alloc()) ScaleOp(sx, sy)); mState.scale(sx, sy); }