From c78b5d50f961ac8f696f8282979ae283cacd3574 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Fri, 4 Feb 2011 14:00:42 -0800 Subject: Properly handle dirty rectangles generated from 9-patches Bug #3409580 This bug affects anything that draws a 9patch inside a layer, this includes launcher's workspace, all of the fade animations, etc. Change-Id: Icbe8ecd158e3d5f44d07516462de68c5d1fb0a8f --- libs/hwui/OpenGLRenderer.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'libs/hwui/OpenGLRenderer.cpp') diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 90d6ea1bc1f0..8ee7ec3f60cd 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1217,17 +1217,18 @@ void OpenGLRenderer::drawPatch(SkBitmap* bitmap, const int32_t* xDivs, const int #if RENDER_LAYERS_AS_REGIONS // Mark the current layer dirty where we are going to draw the patch if (hasLayer() && mesh->hasEmptyQuads) { + const float offsetX = left + mSnapshot->transform->getTranslateX(); + const float offsetY = top + mSnapshot->transform->getTranslateY(); const size_t count = mesh->quads.size(); for (size_t i = 0; i < count; i++) { const Rect& bounds = mesh->quads.itemAt(i); if (pureTranslate) { - const float x = (int) floorf(bounds.left + 0.5f); - const float y = (int) floorf(bounds.top + 0.5f); - dirtyLayer(x, y, x + bounds.getWidth(), y + bounds.getHeight(), - *mSnapshot->transform); + const float x = (int) floorf(bounds.left + offsetX + 0.5f); + const float y = (int) floorf(bounds.top + offsetY + 0.5f); + dirtyLayer(x, y, x + bounds.getWidth(), y + bounds.getHeight()); } else { - dirtyLayer(bounds.left, bounds.top, bounds.right, bounds.bottom, - *mSnapshot->transform); + dirtyLayer(left + bounds.left, top + bounds.top, + left + bounds.right, top + bounds.bottom, *mSnapshot->transform); } } } -- cgit v1.2.3-59-g8ed1b