diff options
Diffstat (limited to 'core/java/android')
4 files changed, 20 insertions, 17 deletions
diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl index 3a2038d40952..666f7218a4f2 100644 --- a/core/java/android/app/IWallpaperManager.aidl +++ b/core/java/android/app/IWallpaperManager.aidl @@ -142,19 +142,20 @@ interface IWallpaperManager { * * @param which either {@link WallpaperManager#FLAG_LOCK} * or {@link WallpaperManager#FLAG_SYSTEM} + * @param displayId Which display is interested * @return colors of chosen wallpaper */ - WallpaperColors getWallpaperColors(int which, int userId); + WallpaperColors getWallpaperColors(int which, int userId, int displayId); /** - * Register a callback to receive color updates + * Register a callback to receive color updates from a display */ - void registerWallpaperColorsCallback(IWallpaperManagerCallback cb, int userId); + void registerWallpaperColorsCallback(IWallpaperManagerCallback cb, int userId, int displayId); /** - * Unregister a callback that was receiving color updates + * Unregister a callback that was receiving color updates from a display */ - void unregisterWallpaperColorsCallback(IWallpaperManagerCallback cb, int userId); + void unregisterWallpaperColorsCallback(IWallpaperManagerCallback cb, int userId, int displayId); /** * Called from SystemUI when it shows the AoD UI. diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index 27ae0b0314d0..a929fe0f688e 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -307,13 +307,14 @@ public class WallpaperManager { * @param callback Listener * @param handler Thread to call it from. Main thread if null. * @param userId Owner of the wallpaper or UserHandle.USER_ALL + * @param displayId Caller comes from which display */ public void addOnColorsChangedListener(@NonNull OnColorsChangedListener callback, - @Nullable Handler handler, int userId) { + @Nullable Handler handler, int userId, int displayId) { synchronized (this) { if (!mColorCallbackRegistered) { try { - mService.registerWallpaperColorsCallback(this, userId); + mService.registerWallpaperColorsCallback(this, userId, displayId); mColorCallbackRegistered = true; } catch (RemoteException e) { // Failed, service is gone @@ -329,16 +330,17 @@ public class WallpaperManager { * * @param callback listener * @param userId Owner of the wallpaper or UserHandle.USER_ALL + * @param displayId Which display is interested */ public void removeOnColorsChangedListener(@NonNull OnColorsChangedListener callback, - int userId) { + int userId, int displayId) { synchronized (this) { mColorListeners.removeIf(pair -> pair.first == callback); if (mColorListeners.size() == 0 && mColorCallbackRegistered) { mColorCallbackRegistered = false; try { - mService.unregisterWallpaperColorsCallback(this, userId); + mService.unregisterWallpaperColorsCallback(this, userId, displayId); } catch (RemoteException e) { // Failed, service is gone Log.w(TAG, "Can't unregister color updates", e); @@ -370,14 +372,14 @@ public class WallpaperManager { } } - WallpaperColors getWallpaperColors(int which, int userId) { + WallpaperColors getWallpaperColors(int which, int userId, int displayId) { if (which != FLAG_LOCK && which != FLAG_SYSTEM) { throw new IllegalArgumentException( "Must request colors for exactly one kind of wallpaper"); } try { - return mService.getWallpaperColors(which, userId); + return mService.getWallpaperColors(which, userId, displayId); } catch (RemoteException e) { // Can't get colors, connection lost. } @@ -894,7 +896,7 @@ public class WallpaperManager { @UnsupportedAppUsage public void addOnColorsChangedListener(@NonNull OnColorsChangedListener listener, @NonNull Handler handler, int userId) { - sGlobals.addOnColorsChangedListener(listener, handler, userId); + sGlobals.addOnColorsChangedListener(listener, handler, userId, mContext.getDisplayId()); } /** @@ -913,7 +915,7 @@ public class WallpaperManager { */ public void removeOnColorsChangedListener(@NonNull OnColorsChangedListener callback, int userId) { - sGlobals.removeOnColorsChangedListener(callback, userId); + sGlobals.removeOnColorsChangedListener(callback, userId, mContext.getDisplayId()); } /** @@ -947,7 +949,7 @@ public class WallpaperManager { */ @UnsupportedAppUsage public @Nullable WallpaperColors getWallpaperColors(int which, int userId) { - return sGlobals.getWallpaperColors(which, userId); + return sGlobals.getWallpaperColors(which, userId, mContext.getDisplayId()); } /** diff --git a/core/java/android/service/wallpaper/IWallpaperConnection.aidl b/core/java/android/service/wallpaper/IWallpaperConnection.aidl index a976d0e40423..f334d9d3e874 100644 --- a/core/java/android/service/wallpaper/IWallpaperConnection.aidl +++ b/core/java/android/service/wallpaper/IWallpaperConnection.aidl @@ -27,5 +27,5 @@ interface IWallpaperConnection { void attachEngine(IWallpaperEngine engine, int displayId); void engineShown(IWallpaperEngine engine); ParcelFileDescriptor setWallpaper(String name); - void onWallpaperColorsChanged(in WallpaperColors colors); + void onWallpaperColorsChanged(in WallpaperColors colors, int displayId); } diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 9079502fa6b2..984846e33b1d 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -645,7 +645,7 @@ public abstract class WallpaperService extends Service { try { final WallpaperColors newColors = onComputeColors(); if (mConnection != null) { - mConnection.onWallpaperColorsChanged(newColors); + mConnection.onWallpaperColorsChanged(newColors, mDisplay.getDisplayId()); } else { Log.w(TAG, "Can't notify system because wallpaper connection " + "was not established."); @@ -1473,7 +1473,7 @@ public abstract class WallpaperService extends Service { break; } try { - mConnection.onWallpaperColorsChanged(mEngine.onComputeColors()); + mConnection.onWallpaperColorsChanged(mEngine.onComputeColors(), mDisplayId); } catch (RemoteException e) { // Connection went away, nothing to do in here. } |
