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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user