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:
Vladislav Kaznacheev
2016-05-13 01:28:45 +00:00
committed by android-build-merger

View File

@@ -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;
}