Loading services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +29 −25 Original line number Diff line number Diff line Loading @@ -1353,9 +1353,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub void complete() { // Only changes from home+lock to just home or lock need attention // If setting the wallpaper fails, this callback will be called // when the wallpaper is detached, in which case wallpapers may have // already changed. Make sure we're not overwriting a more recent wallpaper. if (mNewWallpaper.mSystemWasBoth) { if (DEBUG) { Slog.v(TAG, "Handling change from system+lock wallpaper"); Loading @@ -1378,7 +1375,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub mOriginalSystem.wallpaperComponent; lockWp.connection = mOriginalSystem.connection; lockWp.connection.mWallpaper = lockWp; updateEngineFlags(mOriginalSystem, FLAG_LOCK); mOriginalSystem.mWhich = FLAG_LOCK; updateEngineFlags(mOriginalSystem); notifyWallpaperColorsChanged(lockWp, FLAG_LOCK); } else { // Failed rename, use current system wp for both Loading @@ -1387,7 +1385,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } WallpaperData currentSystem = mWallpaperMap.get(mNewWallpaper.userId); currentSystem.mWhich = FLAG_SYSTEM | FLAG_LOCK; updateEngineFlags(currentSystem, FLAG_SYSTEM | FLAG_LOCK); updateEngineFlags(currentSystem); mLockWallpaperMap.remove(mNewWallpaper.userId); } } else { Loading @@ -1396,7 +1394,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Slog.v(TAG, "live system+lock to system success"); } mOriginalSystem.mWhich = FLAG_LOCK; updateEngineFlags(mOriginalSystem, FLAG_LOCK); updateEngineFlags(mOriginalSystem); mLockWallpaperMap.put(mNewWallpaper.userId, mOriginalSystem); mLastLockWallpaper = mOriginalSystem; notifyWallpaperColorsChanged(mOriginalSystem, FLAG_LOCK); Loading @@ -1409,7 +1407,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub WallpaperData currentSystem = mWallpaperMap.get(mNewWallpaper.userId); if (currentSystem.wallpaperId == mOriginalSystem.wallpaperId) { currentSystem.mWhich = FLAG_SYSTEM; updateEngineFlags(currentSystem, FLAG_SYSTEM); updateEngineFlags(currentSystem); } } } Loading @@ -1422,24 +1420,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Slog.v(TAG, "new lastLockWp: " + mLastLockWallpaper); } } private void updateEngineFlags(WallpaperData wallpaper, @SetWallpaperFlags int which) { if (wallpaper.connection == null) { return; } wallpaper.connection.forEachDisplayConnector( connector -> { try { if (connector.mEngine != null) { connector.mEngine.setWallpaperFlags(which); mWindowManagerInternal.setWallpaperShowWhenLocked( connector.mToken, (which & FLAG_LOCK) != 0); } } catch (RemoteException e) { Slog.e(TAG, "Failed to update wallpaper engine flags", e); } }); } } class MyPackageMonitor extends PackageMonitor { Loading Loading @@ -3095,6 +3075,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub newWallpaper.userId); if (lockedWallpaper != null) { detachWallpaperLocked(lockedWallpaper); if (same) { updateEngineFlags(newWallpaper); } } mLockWallpaperMap.remove(newWallpaper.userId); } Loading Loading @@ -3430,6 +3413,27 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } // Updates the given wallpaper's Engine so that its destination flags are the same as those of // the wallpaper, e.g., after a wallpaper has been changed from displaying on home+lock to home // or lock only. private void updateEngineFlags(WallpaperData wallpaper) { if (wallpaper.connection == null) { return; } wallpaper.connection.forEachDisplayConnector( connector -> { try { if (connector.mEngine != null) { connector.mEngine.setWallpaperFlags(wallpaper.mWhich); mWindowManagerInternal.setWallpaperShowWhenLocked( connector.mToken, (wallpaper.mWhich & FLAG_LOCK) != 0); } } catch (RemoteException e) { Slog.e(TAG, "Failed to update wallpaper engine flags", e); } }); } private void clearWallpaperComponentLocked(WallpaperData wallpaper) { wallpaper.wallpaperComponent = null; detachWallpaperLocked(wallpaper); Loading Loading
services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +29 −25 Original line number Diff line number Diff line Loading @@ -1353,9 +1353,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub void complete() { // Only changes from home+lock to just home or lock need attention // If setting the wallpaper fails, this callback will be called // when the wallpaper is detached, in which case wallpapers may have // already changed. Make sure we're not overwriting a more recent wallpaper. if (mNewWallpaper.mSystemWasBoth) { if (DEBUG) { Slog.v(TAG, "Handling change from system+lock wallpaper"); Loading @@ -1378,7 +1375,8 @@ public class WallpaperManagerService extends IWallpaperManager.Stub mOriginalSystem.wallpaperComponent; lockWp.connection = mOriginalSystem.connection; lockWp.connection.mWallpaper = lockWp; updateEngineFlags(mOriginalSystem, FLAG_LOCK); mOriginalSystem.mWhich = FLAG_LOCK; updateEngineFlags(mOriginalSystem); notifyWallpaperColorsChanged(lockWp, FLAG_LOCK); } else { // Failed rename, use current system wp for both Loading @@ -1387,7 +1385,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } WallpaperData currentSystem = mWallpaperMap.get(mNewWallpaper.userId); currentSystem.mWhich = FLAG_SYSTEM | FLAG_LOCK; updateEngineFlags(currentSystem, FLAG_SYSTEM | FLAG_LOCK); updateEngineFlags(currentSystem); mLockWallpaperMap.remove(mNewWallpaper.userId); } } else { Loading @@ -1396,7 +1394,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Slog.v(TAG, "live system+lock to system success"); } mOriginalSystem.mWhich = FLAG_LOCK; updateEngineFlags(mOriginalSystem, FLAG_LOCK); updateEngineFlags(mOriginalSystem); mLockWallpaperMap.put(mNewWallpaper.userId, mOriginalSystem); mLastLockWallpaper = mOriginalSystem; notifyWallpaperColorsChanged(mOriginalSystem, FLAG_LOCK); Loading @@ -1409,7 +1407,7 @@ public class WallpaperManagerService extends IWallpaperManager.Stub WallpaperData currentSystem = mWallpaperMap.get(mNewWallpaper.userId); if (currentSystem.wallpaperId == mOriginalSystem.wallpaperId) { currentSystem.mWhich = FLAG_SYSTEM; updateEngineFlags(currentSystem, FLAG_SYSTEM); updateEngineFlags(currentSystem); } } } Loading @@ -1422,24 +1420,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub Slog.v(TAG, "new lastLockWp: " + mLastLockWallpaper); } } private void updateEngineFlags(WallpaperData wallpaper, @SetWallpaperFlags int which) { if (wallpaper.connection == null) { return; } wallpaper.connection.forEachDisplayConnector( connector -> { try { if (connector.mEngine != null) { connector.mEngine.setWallpaperFlags(which); mWindowManagerInternal.setWallpaperShowWhenLocked( connector.mToken, (which & FLAG_LOCK) != 0); } } catch (RemoteException e) { Slog.e(TAG, "Failed to update wallpaper engine flags", e); } }); } } class MyPackageMonitor extends PackageMonitor { Loading Loading @@ -3095,6 +3075,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub newWallpaper.userId); if (lockedWallpaper != null) { detachWallpaperLocked(lockedWallpaper); if (same) { updateEngineFlags(newWallpaper); } } mLockWallpaperMap.remove(newWallpaper.userId); } Loading Loading @@ -3430,6 +3413,27 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } // Updates the given wallpaper's Engine so that its destination flags are the same as those of // the wallpaper, e.g., after a wallpaper has been changed from displaying on home+lock to home // or lock only. private void updateEngineFlags(WallpaperData wallpaper) { if (wallpaper.connection == null) { return; } wallpaper.connection.forEachDisplayConnector( connector -> { try { if (connector.mEngine != null) { connector.mEngine.setWallpaperFlags(wallpaper.mWhich); mWindowManagerInternal.setWallpaperShowWhenLocked( connector.mToken, (wallpaper.mWhich & FLAG_LOCK) != 0); } } catch (RemoteException e) { Slog.e(TAG, "Failed to update wallpaper engine flags", e); } }); } private void clearWallpaperComponentLocked(WallpaperData wallpaper) { wallpaper.wallpaperComponent = null; detachWallpaperLocked(wallpaper); Loading