Merge "Fising launcher stuck on blur" into udc-dev

This commit is contained in:
Sunny Goyal
2023-06-09 06:07:31 +00:00
committed by Android (Google) Code Review
3 changed files with 18 additions and 7 deletions

View File

@@ -2042,10 +2042,5 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
setCrossWindowBlursEnabled(
CrossWindowBlurListeners.getInstance().isCrossWindowBlurEnabled());
}
@Override
public void setSurface(SurfaceControl surface) {
super.setSurface(surface);
}
}
}

View File

@@ -158,6 +158,12 @@ public class DepthController extends BaseDepthController implements StateHandler
super.applyDepthAndBlur();
}
@Override
protected void onInvalidSurface() {
// Lets wait for surface to become valid again
mLauncher.getDragLayer().getViewTreeObserver().addOnDrawListener(mOnDrawListener);
}
@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
mIgnoreStateChangesDuringMultiWindowAnimation = true;

View File

@@ -88,6 +88,8 @@ public class BaseDepthController {
*/
protected boolean mInEarlyWakeUp;
private boolean mWaitingOnSurfaceValidity;
public BaseDepthController(Launcher activity) {
mLauncher = activity;
mMaxBlurRadius = activity.getResources().getInteger(R.integer.max_depth_blur_radius);
@@ -115,6 +117,8 @@ public class BaseDepthController {
}
}
protected void onInvalidSurface() { }
protected void applyDepthAndBlur() {
float depth = mDepth;
IBinder windowToken = mLauncher.getRootView().getWindowToken();
@@ -128,9 +132,15 @@ public class BaseDepthController {
if (!BlurUtils.supportsBlursOnWindows()) {
return;
}
if (mSurface == null || !mSurface.isValid()) {
if (mSurface == null) {
return;
}
if (!mSurface.isValid()) {
mWaitingOnSurfaceValidity = true;
onInvalidSurface();
return;
}
mWaitingOnSurfaceValidity = false;
boolean hasOpaqueBg = mLauncher.getScrimView().isFullyOpaque();
boolean isSurfaceOpaque = !mHasContentBehindLauncher && hasOpaqueBg && !mPauseBlurs;
@@ -174,7 +184,7 @@ public class BaseDepthController {
* Sets the specified app target surface to apply the blur to.
*/
protected void setSurface(SurfaceControl surface) {
if (mSurface != surface) {
if (mSurface != surface || mWaitingOnSurfaceValidity) {
mSurface = surface;
applyDepthAndBlur();
}