Merge "Partial fix for jumping freeform windows" into nyc-dev am: d5c94d1af3
am: a072db029f
* commit 'a072db029f876e37bd0bd855c0909192d2efecec':
Partial fix for jumping freeform windows
Change-Id: Icf2b9daf7e3688d164d0b0236bb065eabe29468f
This commit is contained in:
@@ -1803,7 +1803,21 @@ public interface WindowManager extends ViewManager {
|
||||
*/
|
||||
public final void setSurfaceInsets(View view, boolean manual, boolean preservePrevious) {
|
||||
final int surfaceInset = (int) Math.ceil(view.getZ() * 2);
|
||||
surfaceInsets.set(surfaceInset, surfaceInset, surfaceInset, surfaceInset);
|
||||
// Partial workaround for b/28318973. Every inset change causes a freeform window
|
||||
// to jump a little for a few frames. If we never allow surface insets to decrease,
|
||||
// they will stabilize quickly (often from the very beginning, as most windows start
|
||||
// as focused).
|
||||
// TODO(b/22668382) to fix this properly.
|
||||
if (surfaceInset == 0) {
|
||||
// OK to have 0 (this is the case for non-freeform windows).
|
||||
surfaceInsets.set(0, 0, 0, 0);
|
||||
} else {
|
||||
surfaceInsets.set(
|
||||
Math.max(surfaceInset, surfaceInsets.left),
|
||||
Math.max(surfaceInset, surfaceInsets.top),
|
||||
Math.max(surfaceInset, surfaceInsets.right),
|
||||
Math.max(surfaceInset, surfaceInsets.bottom));
|
||||
}
|
||||
hasManualSurfaceInsets = manual;
|
||||
preservePreviousSurfaceInsets = preservePrevious;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user