diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 342b372afca95..7c39201f34aa2 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2395,8 +2395,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager canvas.scale(scale, scale); } } - - boolean layerSaved = false; if (transformToApply != null || alpha < 1.0f || !child.hasIdentityMatrix()) { if (transformToApply != null || !childHasIdentityMatrix) { diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index d343a6f8aaf6d..4813e931eff75 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1213,8 +1213,7 @@ void OpenGLRenderer::drawPatch(SkBitmap* bitmap, const int32_t* xDivs, const int const bool pureTranslate = mSnapshot->transform->isPureTranslate(); #if RENDER_LAYERS_AS_REGIONS // Mark the current layer dirty where we are going to draw the patch - if ((mSnapshot->flags & Snapshot::kFlagFboTarget) && - mSnapshot->region && mesh->hasEmptyQuads) { + if (hasLayer() && mesh->hasEmptyQuads) { const size_t count = mesh->quads.size(); for (size_t i = 0; i < count; i++) { const Rect& bounds = mesh->quads.itemAt(i); @@ -1610,6 +1609,7 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* paint) { layer->alpha = alpha; layer->mode = mode; + LOGD("Drawing layer with alpha = %d", alpha); #if RENDER_LAYERS_AS_REGIONS if (!layer->region.isEmpty()) { @@ -1617,11 +1617,12 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* paint) { const Rect r(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight()); composeLayerRect(layer, r); } else if (layer->mesh) { + const float a = alpha / 255.0f; const Rect& rect = layer->layer; setupDraw(); setupDrawWithTexture(); - setupDrawColor(alpha, alpha, alpha, alpha); + setupDrawColor(a, a, a, a); setupDrawColorFilter(); setupDrawBlending(layer->blend || layer->alpha < 255, layer->mode, false); setupDrawProgram();