Don't send mSizeCompatScale to client if it is from SizeCompatBounds
If an app doesn't fit the container, we would scale the app down at the
server side for making it fit. The client should layout the window as
usual as if there is no scaling.
Fix: 254187021
Test: 1. Open a non-resizeable app which has a fixed orientation.
2. Reduce the display size via `wm size`.
3. See if the app is cropped.
Change-Id: I3ef16def30d4e52da6c4f2acbf17a247cc783774
This commit is contained in:
@@ -1883,7 +1883,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
// Make this invalid which indicates a null attached frame.
|
||||
outAttachedFrame.set(0, 0, -1, -1);
|
||||
}
|
||||
outSizeCompatScale[0] = win.getSizeCompatScale();
|
||||
outSizeCompatScale[0] = win.getSizeCompatScaleForClient();
|
||||
}
|
||||
|
||||
Binder.restoreCallingIdentity(origId);
|
||||
|
||||
@@ -1265,8 +1265,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
mGlobalScale = mInvGlobalScale = mSizeCompatScale = 1f;
|
||||
}
|
||||
|
||||
float getSizeCompatScale() {
|
||||
return mSizeCompatScale;
|
||||
float getSizeCompatScaleForClient() {
|
||||
// If the size compat scale is because of the size compat bounds, we only scale down its
|
||||
// coordinates at the server side without letting the client know.
|
||||
return mToken.hasSizeCompatBounds() ? 1f : mSizeCompatScale;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3863,7 +3865,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
||||
outFrames.attachedFrame.scale(mInvGlobalScale);
|
||||
}
|
||||
}
|
||||
outFrames.sizeCompatScale = mSizeCompatScale;
|
||||
|
||||
outFrames.sizeCompatScale = getSizeCompatScaleForClient();
|
||||
|
||||
// Note: in the cases where the window is tied to an activity, we should not send a
|
||||
// configuration update when the window has requested to be hidden. Doing so can lead to
|
||||
|
||||
Reference in New Issue
Block a user