summaryrefslogtreecommitdiff
path: root/libs/hwui/OpenGLRenderer.cpp
diff options
context:
space:
mode:
author Chris Craik <ccraik@google.com> 2013-02-27 14:03:19 -0800
committer Chris Craik <ccraik@google.com> 2013-02-27 14:03:19 -0800
commit6c5b9be7450903762f676522c32d65f7545730df (patch)
tree4f0930eca0d1481506628100dbc3def1bdf24c45 /libs/hwui/OpenGLRenderer.cpp
parentbe1a8cda3e8113d1fd3a6e56d8bc6c4f2d350423 (diff)
Fix T-junctions in layers' generated meshes
bug:4128442 Currently we fix T-junctions for hardware layers, and for Canvas.saveLayer if the transform isn't rectAsRect. Ideally, hardware layers should lazily re-generate T-junction free geometry if the transform becomes non-rectAsRect Depends on frameworks/native change: https://googleplex-android-review.googlesource.com/#/c/277668/ which adds Region::createTJunctionFreeRegion() Change-Id: Ice75b4a1a4459ff835059ea81d70f7d1563fd96d
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 34d1c983f87d..eec5f5fa1a80 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -1022,7 +1022,14 @@ void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) {
// information about this implementation
if (CC_LIKELY(!layer->region.isEmpty())) {
size_t count;
- const android::Rect* rects = layer->region.getArray(&count);
+ const android::Rect* rects;
+ Region safeRegion;
+ if (CC_LIKELY(hasRectToRectTransform())) {
+ rects = layer->region.getArray(&count);
+ } else {
+ safeRegion = Region::createTJunctionFreeRegion(layer->region);
+ rects = safeRegion.getArray(&count);
+ }
const float alpha = layer->getAlpha() / 255.0f;
const float texX = 1.0f / float(layer->getWidth());