[framework] Modify scalePreview in WallpaperService

Modified the implementation of scalePreview to call setFixedSize instead

This function is used by the wallpaper picker to resolve the scaling
issue.

A TODO b/262750854 is created to later have a holistic fix.

Bug: 204844104
Bug: 240291366
Test: Manuel
Change-Id: Idd45eaac34db69d7e2bdd5450678b7d7e86d4629
This commit is contained in:
George Lin
2022-12-16 02:50:30 +00:00
parent ca906a1ef9
commit 8d43f766e1
2 changed files with 10 additions and 17 deletions

View File

@@ -42,7 +42,7 @@ interface IWallpaperEngine {
@UnsupportedAppUsage
oneway void destroy();
oneway void setZoomOut(float scale);
oneway void scalePreview(in Rect positionInWindow);
oneway void resizePreview(in Rect positionInWindow);
oneway void removeLocalColorsAreas(in List<RectF> regions);
oneway void addLocalColorsAreas(in List<RectF> regions);
SurfaceControl mirrorSurfaceControl();

View File

@@ -163,7 +163,7 @@ public abstract class WallpaperService extends Service {
private static final int MSG_TOUCH_EVENT = 10040;
private static final int MSG_REQUEST_WALLPAPER_COLORS = 10050;
private static final int MSG_ZOOM = 10100;
private static final int MSG_SCALE_PREVIEW = 10110;
private static final int MSG_RESIZE_PREVIEW = 10110;
private static final int MSG_REPORT_SHOWN = 10150;
private static final int MSG_UPDATE_DIMMING = 10200;
private static final List<Float> PROHIBITED_STEPS = Arrays.asList(0f, Float.POSITIVE_INFINITY,
@@ -323,7 +323,7 @@ public abstract class WallpaperService extends Service {
@Override
public void setFixedSize(int width, int height) {
if (!mFixedSizeAllowed) {
if (!mFixedSizeAllowed && !mIWallpaperEngine.mIsPreview) {
// Regular apps can't do this. It can only work for
// certain designs of window animations, so you can't
// rely on it.
@@ -1372,16 +1372,9 @@ public abstract class WallpaperService extends Service {
}
}
private void scalePreview(Rect position) {
if (isPreview() && mPreviewSurfacePosition == null && position != null
|| mPreviewSurfacePosition != null
&& !mPreviewSurfacePosition.equals(position)) {
mPreviewSurfacePosition = position;
if (mSurfaceControl.isValid()) {
reposition();
} else {
updateSurface(false, false, false);
}
private void resizePreview(Rect position) {
if (position != null) {
mSurfaceHolder.setFixedSize(position.width(), position.height());
}
}
@@ -2295,8 +2288,8 @@ public abstract class WallpaperService extends Service {
mCaller.sendMessage(msg);
}
public void scalePreview(Rect position) {
Message msg = mCaller.obtainMessageO(MSG_SCALE_PREVIEW, position);
public void resizePreview(Rect position) {
Message msg = mCaller.obtainMessageO(MSG_RESIZE_PREVIEW, position);
mCaller.sendMessage(msg);
}
@@ -2383,8 +2376,8 @@ public abstract class WallpaperService extends Service {
case MSG_UPDATE_DIMMING:
mEngine.updateWallpaperDimming(Float.intBitsToFloat(message.arg1));
break;
case MSG_SCALE_PREVIEW:
mEngine.scalePreview((Rect) message.obj);
case MSG_RESIZE_PREVIEW:
mEngine.resizePreview((Rect) message.obj);
break;
case MSG_VISIBILITY_CHANGED:
if (DEBUG) Log.v(TAG, "Visibility change in " + mEngine