From 8a884b22a40341126c7a4b9eb814eb52e439670f Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Wed, 7 Apr 2021 15:59:32 -0700 Subject: [PATCH] Provide access to a mirror of WallpaperEngine SurfaceControl Bug: 179127643 Test: manual: tested behavior of wallpaper preview in older WallpaperPicker apk and new version Change-Id: I3b66cbdf2198228e990fae6400d019da91bc93c9 --- .../service/wallpaper/IWallpaperEngine.aidl | 28 ++++++++++--------- .../service/wallpaper/WallpaperService.java | 5 ++++ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/core/java/android/service/wallpaper/IWallpaperEngine.aidl b/core/java/android/service/wallpaper/IWallpaperEngine.aidl index fbb449d3875e5..81af6a2204441 100644 --- a/core/java/android/service/wallpaper/IWallpaperEngine.aidl +++ b/core/java/android/service/wallpaper/IWallpaperEngine.aidl @@ -21,27 +21,29 @@ import android.app.WallpaperColors; import android.graphics.Rect; import android.graphics.RectF; import android.view.MotionEvent; +import android.view.SurfaceControl; import android.os.Bundle; /** * @hide */ -oneway interface IWallpaperEngine { - void setDesiredSize(int width, int height); - void setDisplayPadding(in Rect padding); +interface IWallpaperEngine { + oneway void setDesiredSize(int width, int height); + oneway void setDisplayPadding(in Rect padding); @UnsupportedAppUsage - void setVisibility(boolean visible); - void setInAmbientMode(boolean inAmbientDisplay, long animationDuration); + oneway void setVisibility(boolean visible); + oneway void setInAmbientMode(boolean inAmbientDisplay, long animationDuration); @UnsupportedAppUsage - void dispatchPointer(in MotionEvent event); + oneway void dispatchPointer(in MotionEvent event); @UnsupportedAppUsage - void dispatchWallpaperCommand(String action, int x, int y, + oneway void dispatchWallpaperCommand(String action, int x, int y, int z, in Bundle extras); - void requestWallpaperColors(); + oneway void requestWallpaperColors(); @UnsupportedAppUsage - void destroy(); - void setZoomOut(float scale); - void scalePreview(in Rect positionInWindow); - void removeLocalColorsAreas(in List regions); - void addLocalColorsAreas(in List regions); + oneway void destroy(); + oneway void setZoomOut(float scale); + oneway void scalePreview(in Rect positionInWindow); + oneway void removeLocalColorsAreas(in List regions); + oneway void addLocalColorsAreas(in List regions); + SurfaceControl mirrorSurfaceControl(); } diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 71784ef0b4d68..d89c29a5a360a 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -1982,6 +1982,11 @@ public abstract class WallpaperService extends Service { mCaller.sendMessage(msg); } + @Nullable + public SurfaceControl mirrorSurfaceControl() { + return mEngine == null ? null : SurfaceControl.mirrorSurface(mEngine.mSurfaceControl); + } + private void doDetachEngine() { mActiveEngines.remove(mEngine); mEngine.detach();