Merge "Fix some blast issues with SurfaceViews"
This commit is contained in:
committed by
Android (Google) Code Review
commit
b18d49ad00
@@ -78,6 +78,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
|
||||
import static android.view.WindowManagerGlobal.RELAYOUT_RES_SURFACE_CHANGED;
|
||||
import static android.view.inputmethod.InputMethodEditorTraceProto.InputMethodEditorProto.ClientSideProto.IME_FOCUS_CONTROLLER;
|
||||
import static android.view.inputmethod.InputMethodEditorTraceProto.InputMethodEditorProto.ClientSideProto.INSETS_CONTROLLER;
|
||||
|
||||
@@ -2707,7 +2708,13 @@ public final class ViewRootImpl implements ViewParent,
|
||||
updateColorModeIfNeeded(lp.getColorMode());
|
||||
surfaceCreated = !hadSurface && mSurface.isValid();
|
||||
surfaceDestroyed = hadSurface && !mSurface.isValid();
|
||||
surfaceReplaced = (surfaceGenerationId != mSurface.getGenerationId())
|
||||
// When using Blast, the surface generation id may not change when there's a new
|
||||
// SurfaceControl. In that case, we also check relayout flag
|
||||
// RELAYOUT_RES_SURFACE_CHANGED since it should indicate that WMS created a new
|
||||
// SurfaceControl.
|
||||
surfaceReplaced = (surfaceGenerationId != mSurface.getGenerationId()
|
||||
|| (relayoutResult & RELAYOUT_RES_SURFACE_CHANGED)
|
||||
== RELAYOUT_RES_SURFACE_CHANGED)
|
||||
&& mSurface.isValid();
|
||||
|
||||
if (cutoutChanged) {
|
||||
|
||||
@@ -23,12 +23,10 @@ import static android.graphics.Matrix.MSKEW_Y;
|
||||
import static android.graphics.Matrix.MTRANS_X;
|
||||
import static android.graphics.Matrix.MTRANS_Y;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_SCALED;
|
||||
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
|
||||
import static android.view.WindowManager.TRANSIT_NONE;
|
||||
|
||||
import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_DRAW;
|
||||
@@ -46,19 +44,16 @@ import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ANIM;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_LAYOUT_REPEATS;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STARTING_WINDOW_VERBOSE;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_VISIBILITY;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_WINDOW_CROP;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.SHOW_LIGHT_TRANSACTIONS;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
|
||||
import static com.android.server.wm.WindowManagerService.TYPE_LAYER_MULTIPLIER;
|
||||
import static com.android.server.wm.WindowManagerService.logWithStack;
|
||||
import static com.android.server.wm.WindowStateAnimatorProto.DRAW_STATE;
|
||||
import static com.android.server.wm.WindowStateAnimatorProto.LAST_CLIP_RECT;
|
||||
import static com.android.server.wm.WindowStateAnimatorProto.SURFACE;
|
||||
import static com.android.server.wm.WindowStateAnimatorProto.SYSTEM_DECOR_RECT;
|
||||
import static com.android.server.wm.WindowSurfacePlacer.SET_ORIENTATION_CHANGE_COMPLETE;
|
||||
|
||||
import android.app.WindowConfiguration;
|
||||
import android.content.Context;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.PixelFormat;
|
||||
@@ -365,7 +360,7 @@ class WindowStateAnimator {
|
||||
if (mSurfaceController != null && mPendingDestroySurface != null) {
|
||||
mPostDrawTransaction.reparentChildren(
|
||||
mSurfaceController.getClientViewRootSurface(),
|
||||
mPendingDestroySurface.mSurfaceControl).apply();
|
||||
mPendingDestroySurface.getClientViewRootSurface()).apply();
|
||||
}
|
||||
destroySurfaceLocked();
|
||||
mSurfaceDestroyDeferred = true;
|
||||
@@ -399,7 +394,7 @@ class WindowStateAnimator {
|
||||
&& (mWin.mActivityRecord == null || !mWin.mActivityRecord.isRelaunching())) {
|
||||
mPostDrawTransaction.reparentChildren(
|
||||
mPendingDestroySurface.getClientViewRootSurface(),
|
||||
mSurfaceController.mSurfaceControl).apply();
|
||||
mSurfaceController.getClientViewRootSurface()).apply();
|
||||
}
|
||||
|
||||
destroyDeferredSurfaceLocked();
|
||||
@@ -993,7 +988,7 @@ class WindowStateAnimator {
|
||||
if (!mPendingDestroySurface.mChildrenDetached) {
|
||||
mPostDrawTransaction.reparentChildren(
|
||||
mPendingDestroySurface.getClientViewRootSurface(),
|
||||
mSurfaceController.mSurfaceControl);
|
||||
mSurfaceController.getClientViewRootSurface());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user