Add constraints to animation duration scales
Ensure that all uses of ANIMATOR_DURATION_SCALE are bounded between 0 and 20. Bug: 238178261 Test: adb shell dumpsys window windows | grep "Animation setting" Change-Id: I1f3797c5cf708f5c02ba8644ea9f703244d229a9
This commit is contained in:
@@ -170,9 +170,9 @@ public final class InlineTooltipUi extends PopupWindow implements AutoCloseable
|
||||
|
||||
int delayTimeMs = mShowDelayConfigMs;
|
||||
try {
|
||||
final float scale = Settings.Global.getFloat(
|
||||
final float scale = WindowManager.fixScale(Settings.Global.getFloat(
|
||||
anchor.getContext().getContentResolver(),
|
||||
Settings.Global.ANIMATOR_DURATION_SCALE);
|
||||
Settings.Global.ANIMATOR_DURATION_SCALE));
|
||||
delayTimeMs *= scale;
|
||||
} catch (Settings.SettingNotFoundException e) {
|
||||
// do nothing
|
||||
|
||||
@@ -10,6 +10,7 @@ import android.os.PowerManager
|
||||
import android.provider.Settings
|
||||
import android.view.Surface
|
||||
import android.view.View
|
||||
import android.view.WindowManager.fixScale
|
||||
import com.android.internal.jank.InteractionJankMonitor
|
||||
import com.android.internal.jank.InteractionJankMonitor.CUJ_SCREEN_OFF
|
||||
import com.android.internal.jank.InteractionJankMonitor.CUJ_SCREEN_OFF_SHOW_AOD
|
||||
@@ -138,8 +139,8 @@ class UnlockedScreenOffAnimationController @Inject constructor(
|
||||
}
|
||||
|
||||
fun updateAnimatorDurationScale() {
|
||||
animatorDurationScale =
|
||||
globalSettings.getFloat(Settings.Global.ANIMATOR_DURATION_SCALE, 1f)
|
||||
animatorDurationScale = fixScale(
|
||||
globalSettings.getFloat(Settings.Global.ANIMATOR_DURATION_SCALE, 1f))
|
||||
}
|
||||
|
||||
override fun shouldDelayKeyguardShow(): Boolean =
|
||||
|
||||
@@ -1328,8 +1328,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting);
|
||||
mTransitionAnimationScaleSetting = getTransitionAnimationScaleSetting();
|
||||
|
||||
setAnimatorDurationScale(Settings.Global.getFloat(resolver,
|
||||
Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting));
|
||||
setAnimatorDurationScale(getAnimatorDurationScaleSetting());
|
||||
|
||||
mForceDesktopModeOnExternalDisplays = Settings.Global.getInt(resolver,
|
||||
DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, 0) != 0;
|
||||
@@ -1409,6 +1408,11 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
R.dimen.config_appTransitionAnimationDurationScaleDefault)));
|
||||
}
|
||||
|
||||
private float getAnimatorDurationScaleSetting() {
|
||||
return fixScale(Settings.Global.getFloat(mContext.getContentResolver(),
|
||||
Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting));
|
||||
}
|
||||
|
||||
/**
|
||||
* Called after all entities (such as the {@link ActivityManagerService}) have been set up and
|
||||
* associated with the {@link WindowManagerService}.
|
||||
@@ -5335,10 +5339,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
break;
|
||||
}
|
||||
case ANIMATION_DURATION_SCALE: {
|
||||
mAnimatorDurationScaleSetting = Settings.Global.getFloat(
|
||||
mContext.getContentResolver(),
|
||||
Settings.Global.ANIMATOR_DURATION_SCALE,
|
||||
mAnimatorDurationScaleSetting);
|
||||
mAnimatorDurationScaleSetting = getAnimatorDurationScaleSetting();
|
||||
dispatchNewAnimatorScaleLocked(null);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user