From 36d9a6dfba1a3c39aa3224fdef15cb79e2e9b9a0 Mon Sep 17 00:00:00 2001 From: Chris Craik Date: Thu, 12 Jan 2017 19:17:19 -0800 Subject: [PATCH] Support shadows and reordering in ViewOverlay Bug: 32726440 Test: manual Change-Id: Ic5d7efdee5a493b7768b9db8150f65f97b3f0a64 --- core/java/android/view/ViewOverlay.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/core/java/android/view/ViewOverlay.java b/core/java/android/view/ViewOverlay.java index b770bd50c277c..8fa5d70b41c04 100644 --- a/core/java/android/view/ViewOverlay.java +++ b/core/java/android/view/ViewOverlay.java @@ -238,7 +238,19 @@ public class ViewOverlay { @Override protected void dispatchDraw(Canvas canvas) { + /* + * The OverlayViewGroup doesn't draw with a DisplayList, because + * draw(Canvas, View, long) is never called on it. This is fine, since it doesn't need + * RenderNode/DisplayList features, and can just draw into the owner's Canvas. + * + * This means that we need to insert reorder barriers manually though, so that children + * of the OverlayViewGroup can cast shadows and Z reorder with each other. + */ + canvas.insertReorderBarrier(); + super.dispatchDraw(canvas); + + canvas.insertInorderBarrier(); final int numDrawables = (mDrawables == null) ? 0 : mDrawables.size(); for (int i = 0; i < numDrawables; ++i) { mDrawables.get(i).draw(canvas);