Merge "Update controls after addToDisplay/relayout before dispatching insets" into rvc-dev am: 77d7bcc124 am: 997e6ab588
Change-Id: I6bfa3d6fdb326505d3359b8c601d0717fa2adf45
This commit is contained in:
@@ -30,6 +30,7 @@ import android.util.MergedConfiguration;
|
||||
import android.view.DisplayCutout;
|
||||
import android.view.IWindow;
|
||||
import android.view.IWindowSession;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.View;
|
||||
@@ -120,6 +121,7 @@ public class RelayoutPerfTest extends WindowManagerPerfTestBase {
|
||||
new DisplayCutout.ParcelableWrapper(DisplayCutout.NO_CUTOUT);
|
||||
final MergedConfiguration mOutMergedConfiguration = new MergedConfiguration();
|
||||
final InsetsState mOutInsetsState = new InsetsState();
|
||||
final InsetsSourceControl[] mOutControls = new InsetsSourceControl[0];
|
||||
final IWindow mWindow;
|
||||
final View mView;
|
||||
final WindowManager.LayoutParams mParams;
|
||||
@@ -152,7 +154,7 @@ public class RelayoutPerfTest extends WindowManagerPerfTestBase {
|
||||
mViewVisibility.getAsInt(), mFlags, mFrameNumber, mOutFrame,
|
||||
mOutContentInsets, mOutVisibleInsets, mOutStableInsets,
|
||||
mOutBackDropFrame, mOutDisplayCutout, mOutMergedConfiguration,
|
||||
mOutSurfaceControl, mOutInsetsState, mOutSurfaceSize,
|
||||
mOutSurfaceControl, mOutInsetsState, mOutControls, mOutSurfaceSize,
|
||||
mOutBlastSurfaceControl);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.view.Display;
|
||||
import android.view.DisplayCutout;
|
||||
import android.view.IWindowSession;
|
||||
import android.view.InputChannel;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
@@ -91,6 +92,7 @@ public class WindowAddRemovePerfTest extends WindowManagerPerfTestBase
|
||||
final DisplayCutout.ParcelableWrapper mOutDisplayCutout =
|
||||
new DisplayCutout.ParcelableWrapper();
|
||||
final InsetsState mOutInsetsState = new InsetsState();
|
||||
final InsetsSourceControl[] mOutControls = new InsetsSourceControl[0];
|
||||
|
||||
TestWindow() {
|
||||
mLayoutParams.setTitle(TestWindow.class.getName());
|
||||
@@ -109,7 +111,7 @@ public class WindowAddRemovePerfTest extends WindowManagerPerfTestBase
|
||||
long startTime = SystemClock.elapsedRealtimeNanos();
|
||||
session.addToDisplay(this, mSeq, mLayoutParams, View.VISIBLE,
|
||||
Display.DEFAULT_DISPLAY, mOutFrame, mOutContentInsets, mOutStableInsets,
|
||||
mOutDisplayCutout, inputChannel, mOutInsetsState);
|
||||
mOutDisplayCutout, inputChannel, mOutInsetsState, mOutControls);
|
||||
final long elapsedTimeNsOfAdd = SystemClock.elapsedRealtimeNanos() - startTime;
|
||||
state.addExtraResult("add", elapsedTimeNsOfAdd);
|
||||
|
||||
|
||||
@@ -55,6 +55,7 @@ import android.view.InputChannel;
|
||||
import android.view.InputDevice;
|
||||
import android.view.InputEvent;
|
||||
import android.view.InputEventReceiver;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SurfaceControl;
|
||||
@@ -190,6 +191,7 @@ public abstract class WallpaperService extends Service {
|
||||
new DisplayCutout.ParcelableWrapper();
|
||||
DisplayCutout mDispatchedDisplayCutout = DisplayCutout.NO_CUTOUT;
|
||||
final InsetsState mInsetsState = new InsetsState();
|
||||
final InsetsSourceControl[] mTempControls = new InsetsSourceControl[0];
|
||||
final MergedConfiguration mMergedConfiguration = new MergedConfiguration();
|
||||
private final Point mSurfaceSize = new Point();
|
||||
|
||||
@@ -878,7 +880,7 @@ public abstract class WallpaperService extends Service {
|
||||
if (mSession.addToDisplay(mWindow, mWindow.mSeq, mLayout, View.VISIBLE,
|
||||
mDisplay.getDisplayId(), mWinFrame, mContentInsets, mStableInsets,
|
||||
mDisplayCutout, inputChannel,
|
||||
mInsetsState) < 0) {
|
||||
mInsetsState, mTempControls) < 0) {
|
||||
Log.w(TAG, "Failed to add window while updating wallpaper surface.");
|
||||
return;
|
||||
}
|
||||
@@ -903,7 +905,7 @@ public abstract class WallpaperService extends Service {
|
||||
View.VISIBLE, 0, -1, mWinFrame, mContentInsets,
|
||||
mVisibleInsets, mStableInsets, mBackdropFrame,
|
||||
mDisplayCutout, mMergedConfiguration, mSurfaceControl,
|
||||
mInsetsState, mSurfaceSize, mTmpSurfaceControl);
|
||||
mInsetsState, mTempControls, mSurfaceSize, mTmpSurfaceControl);
|
||||
if (mSurfaceControl.isValid()) {
|
||||
mSurfaceHolder.mSurface.copyFrom(mSurfaceControl);
|
||||
mSurfaceControl.release();
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.view.IWindow;
|
||||
import android.view.IWindowId;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.WindowManager;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceControl;
|
||||
@@ -46,7 +47,7 @@ interface IWindowSession {
|
||||
in int viewVisibility, in int layerStackId, out Rect outFrame,
|
||||
out Rect outContentInsets, out Rect outStableInsets,
|
||||
out DisplayCutout.ParcelableWrapper displayCutout, out InputChannel outInputChannel,
|
||||
out InsetsState insetsState);
|
||||
out InsetsState insetsState, out InsetsSourceControl[] activeControls);
|
||||
int addToDisplayWithoutInputChannel(IWindow window, int seq, in WindowManager.LayoutParams attrs,
|
||||
in int viewVisibility, in int layerStackId, out Rect outContentInsets,
|
||||
out Rect outStableInsets, out InsetsState insetsState);
|
||||
@@ -106,8 +107,8 @@ interface IWindowSession {
|
||||
out Rect outBackdropFrame,
|
||||
out DisplayCutout.ParcelableWrapper displayCutout,
|
||||
out MergedConfiguration outMergedConfiguration, out SurfaceControl outSurfaceControl,
|
||||
out InsetsState insetsState, out Point outSurfaceSize,
|
||||
out SurfaceControl outBlastSurfaceControl);
|
||||
out InsetsState insetsState, out InsetsSourceControl[] activeControls,
|
||||
out Point outSurfaceSize, out SurfaceControl outBlastSurfaceControl);
|
||||
|
||||
/*
|
||||
* Notify the window manager that an application is relaunching and
|
||||
|
||||
@@ -21,6 +21,7 @@ import static android.view.Display.INVALID_DISPLAY;
|
||||
import static android.view.InputDevice.SOURCE_CLASS_NONE;
|
||||
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
|
||||
import static android.view.InsetsState.ITYPE_STATUS_BAR;
|
||||
import static android.view.InsetsState.LAST_TYPE;
|
||||
import static android.view.View.PFLAG_DRAW_ANIMATION;
|
||||
import static android.view.View.SYSTEM_UI_FLAG_FULLSCREEN;
|
||||
import static android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
|
||||
@@ -558,7 +559,8 @@ public final class ViewRootImpl implements ViewParent,
|
||||
final DisplayCutout.ParcelableWrapper mPendingDisplayCutout =
|
||||
new DisplayCutout.ParcelableWrapper(DisplayCutout.NO_CUTOUT);
|
||||
boolean mPendingAlwaysConsumeSystemBars;
|
||||
private InsetsState mTempInsets = new InsetsState();
|
||||
private final InsetsState mTempInsets = new InsetsState();
|
||||
private final InsetsSourceControl[] mTempControls = new InsetsSourceControl[LAST_TYPE + 1];
|
||||
final ViewTreeObserver.InternalInsetsInfo mLastGivenInsets
|
||||
= new ViewTreeObserver.InternalInsetsInfo();
|
||||
|
||||
@@ -1003,7 +1005,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
getHostVisibility(), mDisplay.getDisplayId(), mTmpFrame,
|
||||
mAttachInfo.mContentInsets, mAttachInfo.mStableInsets,
|
||||
mAttachInfo.mDisplayCutout, inputChannel,
|
||||
mTempInsets);
|
||||
mTempInsets, mTempControls);
|
||||
setFrame(mTmpFrame);
|
||||
} catch (RemoteException e) {
|
||||
mAdded = false;
|
||||
@@ -1028,6 +1030,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
(res & WindowManagerGlobal.ADD_FLAG_ALWAYS_CONSUME_SYSTEM_BARS) != 0;
|
||||
mPendingAlwaysConsumeSystemBars = mAttachInfo.mAlwaysConsumeSystemBars;
|
||||
mInsetsController.onStateChanged(mTempInsets);
|
||||
mInsetsController.onControlsChanged(mTempControls);
|
||||
if (DEBUG_LAYOUT) Log.v(mTag, "Added window " + mWindow);
|
||||
if (res < WindowManagerGlobal.ADD_OKAY) {
|
||||
mAttachInfo.mRootView = null;
|
||||
@@ -7356,7 +7359,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
insetsPending ? WindowManagerGlobal.RELAYOUT_INSETS_PENDING : 0, frameNumber,
|
||||
mTmpFrame, mTmpRect, mTmpRect, mTmpRect, mPendingBackDropFrame,
|
||||
mPendingDisplayCutout, mPendingMergedConfiguration, mSurfaceControl, mTempInsets,
|
||||
mSurfaceSize, mBlastSurfaceControl);
|
||||
mTempControls, mSurfaceSize, mBlastSurfaceControl);
|
||||
if (mSurfaceControl.isValid()) {
|
||||
if (!mUseBLASTAdapter) {
|
||||
mSurface.copyFrom(mSurfaceControl);
|
||||
@@ -7386,6 +7389,7 @@ public final class ViewRootImpl implements ViewParent,
|
||||
}
|
||||
setFrame(mTmpFrame);
|
||||
mInsetsController.onStateChanged(mTempInsets);
|
||||
mInsetsController.onControlsChanged(mTempControls);
|
||||
return relayoutResult;
|
||||
}
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ public class WindowlessWindowManager implements IWindowSession {
|
||||
int viewVisibility, int displayId, Rect outFrame, Rect outContentInsets,
|
||||
Rect outStableInsets,
|
||||
DisplayCutout.ParcelableWrapper outDisplayCutout, InputChannel outInputChannel,
|
||||
InsetsState outInsetsState) {
|
||||
InsetsState outInsetsState, InsetsSourceControl[] outActiveControls) {
|
||||
final SurfaceControl.Builder b = new SurfaceControl.Builder(mSurfaceSession)
|
||||
.setParent(mRootSurface)
|
||||
.setFormat(attrs.format)
|
||||
@@ -179,7 +179,8 @@ public class WindowlessWindowManager implements IWindowSession {
|
||||
Rect outStableInsets, Rect outBackdropFrame,
|
||||
DisplayCutout.ParcelableWrapper cutout, MergedConfiguration mergedConfiguration,
|
||||
SurfaceControl outSurfaceControl, InsetsState outInsetsState,
|
||||
Point outSurfaceSize, SurfaceControl outBLASTSurfaceControl) {
|
||||
InsetsSourceControl[] outActiveControls, Point outSurfaceSize,
|
||||
SurfaceControl outBLASTSurfaceControl) {
|
||||
final State state;
|
||||
synchronized (this) {
|
||||
state = mStateForWindow.get(window.asBinder());
|
||||
|
||||
@@ -258,12 +258,13 @@ public class SystemWindows {
|
||||
Rect outVisibleInsets, Rect outStableInsets,
|
||||
DisplayCutout.ParcelableWrapper cutout, MergedConfiguration mergedConfiguration,
|
||||
SurfaceControl outSurfaceControl, InsetsState outInsetsState,
|
||||
Point outSurfaceSize, SurfaceControl outBLASTSurfaceControl) {
|
||||
InsetsSourceControl[] outActiveControls, Point outSurfaceSize,
|
||||
SurfaceControl outBLASTSurfaceControl) {
|
||||
int res = super.relayout(window, seq, attrs, requestedWidth, requestedHeight,
|
||||
viewVisibility, flags, frameNumber, outFrame, outOverscanInsets,
|
||||
outContentInsets, outVisibleInsets, outStableInsets,
|
||||
cutout, mergedConfiguration, outSurfaceControl, outInsetsState,
|
||||
outSurfaceSize, outBLASTSurfaceControl);
|
||||
outActiveControls, outSurfaceSize, outBLASTSurfaceControl);
|
||||
if (res != 0) {
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ import android.view.IWindowId;
|
||||
import android.view.IWindowSession;
|
||||
import android.view.IWindowSessionCallback;
|
||||
import android.view.InputChannel;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.SurfaceSession;
|
||||
@@ -158,10 +159,10 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient {
|
||||
int viewVisibility, int displayId, Rect outFrame, Rect outContentInsets,
|
||||
Rect outStableInsets,
|
||||
DisplayCutout.ParcelableWrapper outDisplayCutout, InputChannel outInputChannel,
|
||||
InsetsState outInsetsState) {
|
||||
InsetsState outInsetsState, InsetsSourceControl[] outActiveControls) {
|
||||
return mService.addWindow(this, window, seq, attrs, viewVisibility, displayId, outFrame,
|
||||
outContentInsets, outStableInsets, outDisplayCutout, outInputChannel,
|
||||
outInsetsState);
|
||||
outInsetsState, outActiveControls);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -171,7 +172,7 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient {
|
||||
return mService.addWindow(this, window, seq, attrs, viewVisibility, displayId,
|
||||
new Rect() /* outFrame */, outContentInsets, outStableInsets,
|
||||
new DisplayCutout.ParcelableWrapper() /* cutout */, null /* outInputChannel */,
|
||||
outInsetsState);
|
||||
outInsetsState, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -191,7 +192,8 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient {
|
||||
Rect outStableInsets, Rect outBackdropFrame,
|
||||
DisplayCutout.ParcelableWrapper cutout, MergedConfiguration mergedConfiguration,
|
||||
SurfaceControl outSurfaceControl, InsetsState outInsetsState,
|
||||
Point outSurfaceSize, SurfaceControl outBLASTSurfaceControl) {
|
||||
InsetsSourceControl[] outActiveControls, Point outSurfaceSize,
|
||||
SurfaceControl outBLASTSurfaceControl) {
|
||||
if (false) Slog.d(TAG_WM, ">>>>>> ENTERED relayout from "
|
||||
+ Binder.getCallingPid());
|
||||
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, mRelayoutTag);
|
||||
@@ -199,8 +201,8 @@ class Session extends IWindowSession.Stub implements IBinder.DeathRecipient {
|
||||
requestedWidth, requestedHeight, viewFlags, flags, frameNumber,
|
||||
outFrame, outContentInsets, outVisibleInsets,
|
||||
outStableInsets, outBackdropFrame, cutout,
|
||||
mergedConfiguration, outSurfaceControl, outInsetsState, outSurfaceSize,
|
||||
outBLASTSurfaceControl);
|
||||
mergedConfiguration, outSurfaceControl, outInsetsState, outActiveControls,
|
||||
outSurfaceSize, outBLASTSurfaceControl);
|
||||
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
|
||||
if (false) Slog.d(TAG_WM, "<<<<<< EXITING relayout to "
|
||||
+ Binder.getCallingPid());
|
||||
|
||||
@@ -68,6 +68,7 @@ import android.util.MergedConfiguration;
|
||||
import android.util.Slog;
|
||||
import android.view.DisplayCutout;
|
||||
import android.view.IWindowSession;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
import android.view.Surface;
|
||||
import android.view.SurfaceControl;
|
||||
@@ -164,6 +165,7 @@ class TaskSnapshotSurface implements StartingSurface {
|
||||
final Rect tmpContentInsets = new Rect();
|
||||
final Rect tmpStableInsets = new Rect();
|
||||
final InsetsState mTmpInsetsState = new InsetsState();
|
||||
final InsetsSourceControl[] mTempControls = new InsetsSourceControl[0];
|
||||
final MergedConfiguration tmpMergedConfiguration = new MergedConfiguration();
|
||||
final TaskDescription taskDescription = new TaskDescription();
|
||||
taskDescription.setBackgroundColor(WHITE);
|
||||
@@ -231,8 +233,8 @@ class TaskSnapshotSurface implements StartingSurface {
|
||||
}
|
||||
try {
|
||||
final int res = session.addToDisplay(window, window.mSeq, layoutParams,
|
||||
View.GONE, activity.getDisplayContent().getDisplayId(), tmpFrame, tmpRect, tmpRect,
|
||||
tmpCutout, null, mTmpInsetsState);
|
||||
View.GONE, activity.getDisplayContent().getDisplayId(), tmpFrame, tmpRect,
|
||||
tmpRect, tmpCutout, null, mTmpInsetsState, mTempControls);
|
||||
if (res < 0) {
|
||||
Slog.w(TAG, "Failed to add snapshot starting window res=" + res);
|
||||
return null;
|
||||
@@ -249,7 +251,7 @@ class TaskSnapshotSurface implements StartingSurface {
|
||||
session.relayout(window, window.mSeq, layoutParams, -1, -1, View.VISIBLE, 0, -1,
|
||||
tmpFrame, tmpContentInsets, tmpRect, tmpStableInsets, tmpRect,
|
||||
tmpCutout, tmpMergedConfiguration, surfaceControl, mTmpInsetsState,
|
||||
sTmpSurfaceSize, sTmpSurfaceControl);
|
||||
mTempControls, sTmpSurfaceSize, sTmpSurfaceControl);
|
||||
} catch (RemoteException e) {
|
||||
// Local call.
|
||||
}
|
||||
|
||||
@@ -227,6 +227,7 @@ import android.view.InputChannel;
|
||||
import android.view.InputDevice;
|
||||
import android.view.InputEvent;
|
||||
import android.view.InputWindowHandle;
|
||||
import android.view.InsetsSourceControl;
|
||||
import android.view.InsetsState;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MagnificationSpec;
|
||||
@@ -1356,7 +1357,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
LayoutParams attrs, int viewVisibility, int displayId, Rect outFrame,
|
||||
Rect outContentInsets, Rect outStableInsets,
|
||||
DisplayCutout.ParcelableWrapper outDisplayCutout, InputChannel outInputChannel,
|
||||
InsetsState outInsetsState) {
|
||||
InsetsState outInsetsState, InsetsSourceControl[] outActiveControls) {
|
||||
int[] appOp = new int[1];
|
||||
final boolean isRoundedCornerOverlay = (attrs.privateFlags
|
||||
& PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY) != 0;
|
||||
@@ -1643,8 +1644,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
outStableInsets, outDisplayCutout)) {
|
||||
res |= WindowManagerGlobal.ADD_FLAG_ALWAYS_CONSUME_SYSTEM_BARS;
|
||||
}
|
||||
outInsetsState.set(win.getInsetsState(),
|
||||
win.mClient instanceof IWindow.Stub /* copySource */);
|
||||
outInsetsState.set(win.getInsetsState(), win.isClientLocal());
|
||||
|
||||
if (mInTouchMode) {
|
||||
res |= WindowManagerGlobal.ADD_FLAG_IN_TOUCH_MODE;
|
||||
@@ -1678,6 +1678,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
}
|
||||
displayContent.getInputMonitor().updateInputWindowsLw(false /*force*/);
|
||||
|
||||
getInsetsSourceControls(win, outActiveControls);
|
||||
|
||||
ProtoLog.v(WM_DEBUG_ADD_REMOVE, "addWindow: New client %s"
|
||||
+ ": window=%s Callers=%s", client.asBinder(), win, Debug.getCallers(5));
|
||||
|
||||
@@ -2080,7 +2082,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
Rect outVisibleInsets, Rect outStableInsets, Rect outBackdropFrame,
|
||||
DisplayCutout.ParcelableWrapper outCutout, MergedConfiguration mergedConfiguration,
|
||||
SurfaceControl outSurfaceControl, InsetsState outInsetsState,
|
||||
Point outSurfaceSize, SurfaceControl outBLASTSurfaceControl) {
|
||||
InsetsSourceControl[] outActiveControls, Point outSurfaceSize,
|
||||
SurfaceControl outBLASTSurfaceControl) {
|
||||
int result = 0;
|
||||
boolean configChanged;
|
||||
final int pid = Binder.getCallingPid();
|
||||
@@ -2375,8 +2378,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
outStableInsets);
|
||||
outCutout.set(win.getWmDisplayCutout().getDisplayCutout());
|
||||
outBackdropFrame.set(win.getBackdropFrame(win.getFrameLw()));
|
||||
outInsetsState.set(win.getInsetsState(),
|
||||
win.mClient instanceof IWindow.Stub /* copySource */);
|
||||
outInsetsState.set(win.getInsetsState(), win.isClientLocal());
|
||||
getInsetsSourceControls(win, outActiveControls);
|
||||
if (DEBUG) {
|
||||
Slog.v(TAG_WM, "Relayout given client " + client.asBinder()
|
||||
+ ", requestedWidth=" + requestedWidth
|
||||
@@ -2413,6 +2416,21 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
return result;
|
||||
}
|
||||
|
||||
private void getInsetsSourceControls(WindowState win, InsetsSourceControl[] outControls) {
|
||||
if (outControls != null) {
|
||||
final InsetsSourceControl[] controls =
|
||||
win.getDisplayContent().getInsetsStateController().getControlsForDispatch(win);
|
||||
Arrays.fill(outControls, null);
|
||||
if (controls != null) {
|
||||
final int length = Math.min(controls.length, outControls.length);
|
||||
for (int i = 0; i < length; i++) {
|
||||
outControls[i] = win.isClientLocal()
|
||||
? new InsetsSourceControl(controls[i]) : controls[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean tryStartExitingAnimation(WindowState win, WindowStateAnimator winAnimator,
|
||||
boolean focusMayChange) {
|
||||
// Try starting an animation; if there isn't one, we
|
||||
|
||||
@@ -3479,6 +3479,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
|
||||
}
|
||||
|
||||
boolean isClientLocal() {
|
||||
return mClient instanceof IWindow.Stub;
|
||||
}
|
||||
|
||||
void updateLocationInParentDisplayIfNeeded() {
|
||||
final int embeddedDisplayContentsSize = mEmbeddedDisplayContents.size();
|
||||
// If there is any embedded display which is re-parented to this window, we need to
|
||||
|
||||
Reference in New Issue
Block a user