Loading services/core/java/com/android/server/wm/WindowManagerService.java +67 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.wm; import android.Manifest; import android.animation.ValueAnimator; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManagerInternal; Loading Loading @@ -153,6 +154,8 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.net.Socket; import java.text.DateFormat; import java.util.ArrayList; Loading Loading @@ -332,6 +335,14 @@ public class WindowManagerService extends IWindowManager.Stub private static final String PROPERTY_BUILD_DATE_UTC = "ro.build.date.utc"; // Enums for animation scale update types. @Retention(RetentionPolicy.SOURCE) @IntDef({WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE, ANIMATION_DURATION_SCALE}) private @interface UpdateAnimationScaleMode {}; private static final int WINDOW_ANIMATION_SCALE = 0; private static final int TRANSITION_ANIMATION_SCALE = 1; private static final int ANIMATION_DURATION_SCALE = 2; final private KeyguardDisableHandler mKeyguardDisableHandler; final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { Loading Loading @@ -613,18 +624,42 @@ public class WindowManagerService extends IWindowManager.Stub private final class SettingsObserver extends ContentObserver { private final Uri mDisplayInversionEnabledUri = Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); private final Uri mWindowAnimationScaleUri = Settings.Global.getUriFor(Settings.Global.WINDOW_ANIMATION_SCALE); private final Uri mTransitionAnimationScaleUri = Settings.Global.getUriFor(Settings.Global.TRANSITION_ANIMATION_SCALE); private final Uri mAnimationDurationScaleUri = Settings.Global.getUriFor(Settings.Global.ANIMATOR_DURATION_SCALE); public SettingsObserver() { super(new Handler()); ContentResolver resolver = mContext.getContentResolver(); resolver.registerContentObserver(mDisplayInversionEnabledUri, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mWindowAnimationScaleUri, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mTransitionAnimationScaleUri, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mAnimationDurationScaleUri, false, this, UserHandle.USER_ALL); } @Override public void onChange(boolean selfChange, Uri uri) { if (mDisplayInversionEnabledUri.equals(uri)) { updateCircularDisplayMaskIfNeeded(); } else { @UpdateAnimationScaleMode final int mode; if (uri.equals(mWindowAnimationScaleUri)) { mode = WINDOW_ANIMATION_SCALE; } else if (uri.equals(mTransitionAnimationScaleUri)) { mode = TRANSITION_ANIMATION_SCALE; } else { // uri.equals(mAnimationDurationScaleUri) mode = ANIMATION_DURATION_SCALE; } Message m = mH.obtainMessage(H.UPDATE_ANIMATION_SCALE, mode, 0); mH.sendMessage(m); } } } Loading Loading @@ -7748,6 +7783,8 @@ public class WindowManagerService extends IWindowManager.Stub public static final int NOTIFY_APP_TRANSITION_FINISHED = 49; public static final int NOTIFY_STARTING_WINDOW_DRAWN = 50; public static final int UPDATE_ANIMATION_SCALE = 51; /** * Used to denote that an integer field in a message will not be used. */ Loading Loading @@ -8030,6 +8067,36 @@ public class WindowManagerService extends IWindowManager.Stub break; } case UPDATE_ANIMATION_SCALE: { @UpdateAnimationScaleMode final int mode = msg.arg1; switch (mode) { case WINDOW_ANIMATION_SCALE: { mWindowAnimationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting); break; } case TRANSITION_ANIMATION_SCALE: { mTransitionAnimationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE, mTransitionAnimationScaleSetting); break; } case ANIMATION_DURATION_SCALE: { mAnimatorDurationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting); dispatchNewAnimatorScaleLocked(null); break; } } break; } case FORCE_GC: { synchronized (mWindowMap) { // Since we're holding both mWindowMap and mAnimator we don't need to Loading Loading
services/core/java/com/android/server/wm/WindowManagerService.java +67 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.server.wm; import android.Manifest; import android.animation.ValueAnimator; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManagerInternal; Loading Loading @@ -153,6 +154,8 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StringWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.net.Socket; import java.text.DateFormat; import java.util.ArrayList; Loading Loading @@ -332,6 +335,14 @@ public class WindowManagerService extends IWindowManager.Stub private static final String PROPERTY_BUILD_DATE_UTC = "ro.build.date.utc"; // Enums for animation scale update types. @Retention(RetentionPolicy.SOURCE) @IntDef({WINDOW_ANIMATION_SCALE, TRANSITION_ANIMATION_SCALE, ANIMATION_DURATION_SCALE}) private @interface UpdateAnimationScaleMode {}; private static final int WINDOW_ANIMATION_SCALE = 0; private static final int TRANSITION_ANIMATION_SCALE = 1; private static final int ANIMATION_DURATION_SCALE = 2; final private KeyguardDisableHandler mKeyguardDisableHandler; final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { Loading Loading @@ -613,18 +624,42 @@ public class WindowManagerService extends IWindowManager.Stub private final class SettingsObserver extends ContentObserver { private final Uri mDisplayInversionEnabledUri = Settings.Secure.getUriFor(Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); private final Uri mWindowAnimationScaleUri = Settings.Global.getUriFor(Settings.Global.WINDOW_ANIMATION_SCALE); private final Uri mTransitionAnimationScaleUri = Settings.Global.getUriFor(Settings.Global.TRANSITION_ANIMATION_SCALE); private final Uri mAnimationDurationScaleUri = Settings.Global.getUriFor(Settings.Global.ANIMATOR_DURATION_SCALE); public SettingsObserver() { super(new Handler()); ContentResolver resolver = mContext.getContentResolver(); resolver.registerContentObserver(mDisplayInversionEnabledUri, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mWindowAnimationScaleUri, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mTransitionAnimationScaleUri, false, this, UserHandle.USER_ALL); resolver.registerContentObserver(mAnimationDurationScaleUri, false, this, UserHandle.USER_ALL); } @Override public void onChange(boolean selfChange, Uri uri) { if (mDisplayInversionEnabledUri.equals(uri)) { updateCircularDisplayMaskIfNeeded(); } else { @UpdateAnimationScaleMode final int mode; if (uri.equals(mWindowAnimationScaleUri)) { mode = WINDOW_ANIMATION_SCALE; } else if (uri.equals(mTransitionAnimationScaleUri)) { mode = TRANSITION_ANIMATION_SCALE; } else { // uri.equals(mAnimationDurationScaleUri) mode = ANIMATION_DURATION_SCALE; } Message m = mH.obtainMessage(H.UPDATE_ANIMATION_SCALE, mode, 0); mH.sendMessage(m); } } } Loading Loading @@ -7748,6 +7783,8 @@ public class WindowManagerService extends IWindowManager.Stub public static final int NOTIFY_APP_TRANSITION_FINISHED = 49; public static final int NOTIFY_STARTING_WINDOW_DRAWN = 50; public static final int UPDATE_ANIMATION_SCALE = 51; /** * Used to denote that an integer field in a message will not be used. */ Loading Loading @@ -8030,6 +8067,36 @@ public class WindowManagerService extends IWindowManager.Stub break; } case UPDATE_ANIMATION_SCALE: { @UpdateAnimationScaleMode final int mode = msg.arg1; switch (mode) { case WINDOW_ANIMATION_SCALE: { mWindowAnimationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.WINDOW_ANIMATION_SCALE, mWindowAnimationScaleSetting); break; } case TRANSITION_ANIMATION_SCALE: { mTransitionAnimationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.TRANSITION_ANIMATION_SCALE, mTransitionAnimationScaleSetting); break; } case ANIMATION_DURATION_SCALE: { mAnimatorDurationScaleSetting = Settings.Global.getFloat( mContext.getContentResolver(), Settings.Global.ANIMATOR_DURATION_SCALE, mAnimatorDurationScaleSetting); dispatchNewAnimatorScaleLocked(null); break; } } break; } case FORCE_GC: { synchronized (mWindowMap) { // Since we're holding both mWindowMap and mAnimator we don't need to Loading