SurfaceView: Wait to gather transparent region.

With the introduction of surfaceRedrawNeededAsync we may
be asked to gather the transparent region ahead of the SurfaceView
having been drawn.

Bug: 38324871
Test: Launch Chrome Canary a lot! No Flickers.
Change-Id: I35f09a1bb8316895fa704b10c912e64a8920bd90
This commit is contained in:
Robert Carr
2017-05-22 14:57:48 -07:00
committed by Rob Carr
parent 387b97e68b
commit 3ca12be796

View File

@@ -138,6 +138,8 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
case DRAW_FINISHED_MSG: {
mDrawFinished = true;
if (mAttachedToWindow) {
mParent.requestTransparentRegion(SurfaceView.this);
notifyDrawFinished();
invalidate();
}
@@ -247,7 +249,6 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
getViewRootImpl().addWindowStoppedCallback(this);
mWindowStopped = false;
mParent.requestTransparentRegion(this);
mViewVisibility = getVisibility() == VISIBLE;
updateRequestedVisibility();
@@ -352,7 +353,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
@Override
public boolean gatherTransparentRegion(Region region) {
if (isAboveParent()) {
if (isAboveParent() || !mDrawFinished) {
return super.gatherTransparentRegion(region);
}