Revert "Refresh layout parameter for bounds change from relayout"

This reverts commit 6f049fef5c.

Reason for revert: b/278008782

Change-Id: I2a01be993da85b0839e8a4590166da526221f643
This commit is contained in:
Rasheed Lewis
2023-04-13 16:19:34 +00:00
committed by Android (Google) Code Review
parent 6f049fef5c
commit cc067ed393

View File

@@ -112,7 +112,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Supplier;
/**
@@ -432,7 +431,6 @@ public abstract class WallpaperService extends Service {
Message msg = mCaller.obtainMessageIO(MSG_WINDOW_RESIZED,
reportDraw ? 1 : 0,
mergedConfiguration);
mIWallpaperEngine.mPendingResizeCount.incrementAndGet();
mCaller.sendMessage(msg);
}
@@ -512,7 +510,6 @@ public abstract class WallpaperService extends Service {
public Engine(Supplier<Long> clockFunction, Handler handler) {
mClockFunction = clockFunction;
mHandler = handler;
mMergedConfiguration.setOverrideConfiguration(getResources().getConfiguration());
}
/**
@@ -1054,10 +1051,6 @@ public abstract class WallpaperService extends Service {
out.print(prefix); out.print("mZoom="); out.println(mZoom);
out.print(prefix); out.print("mPreviewSurfacePosition=");
out.println(mPreviewSurfacePosition);
final int pendingCount = mIWallpaperEngine.mPendingResizeCount.get();
if (pendingCount != 0) {
out.print(prefix); out.print("mPendingResizeCount="); out.println(pendingCount);
}
synchronized (mLock) {
out.print(prefix); out.print("mPendingXOffset="); out.print(mPendingXOffset);
out.print(" mPendingXOffset="); out.println(mPendingXOffset);
@@ -1120,6 +1113,10 @@ public abstract class WallpaperService extends Service {
}
}
private void updateConfiguration(MergedConfiguration mergedConfiguration) {
mMergedConfiguration.setTo(mergedConfiguration);
}
void updateSurface(boolean forceRelayout, boolean forceReport, boolean redrawNeeded) {
if (mDestroyed) {
Log.w(TAG, "Ignoring updateSurface due to destroyed");
@@ -1168,7 +1165,7 @@ public abstract class WallpaperService extends Service {
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
final Configuration config = mMergedConfiguration.getMergedConfiguration();
final Rect maxBounds = new Rect(config.windowConfiguration.getMaxBounds());
final Rect maxBounds = config.windowConfiguration.getMaxBounds();
if (myWidth == ViewGroup.LayoutParams.MATCH_PARENT
&& myHeight == ViewGroup.LayoutParams.MATCH_PARENT) {
mLayout.width = myWidth;
@@ -1224,17 +1221,6 @@ public abstract class WallpaperService extends Service {
final int relayoutResult = mSession.relayout(mWindow, mLayout, mWidth, mHeight,
View.VISIBLE, 0, 0, 0, mWinFrames, mMergedConfiguration,
mSurfaceControl, mInsetsState, mTempControls, mSyncSeqIdBundle);
final Rect outMaxBounds = mMergedConfiguration.getMergedConfiguration()
.windowConfiguration.getMaxBounds();
if (!outMaxBounds.equals(maxBounds)) {
Log.i(TAG, "Retry updateSurface because bounds changed from relayout: "
+ maxBounds + " -> " + outMaxBounds);
mSurfaceHolder.mSurfaceLock.unlock();
mDrawingAllowed = false;
mCaller.sendMessage(mCaller.obtainMessageI(MSG_WINDOW_RESIZED,
redrawNeeded ? 1 : 0));
return;
}
final int transformHint = SurfaceControl.rotationToBufferTransform(
(mDisplay.getInstallOrientation() + mDisplay.getRotation()) % 4);
@@ -2338,8 +2324,6 @@ public abstract class WallpaperService extends Service {
final IBinder mWindowToken;
final int mWindowType;
final boolean mIsPreview;
final AtomicInteger mPendingResizeCount = new AtomicInteger();
boolean mReportDraw;
boolean mShownReported;
int mReqWidth;
int mReqHeight;
@@ -2595,7 +2579,11 @@ public abstract class WallpaperService extends Service {
mEngine.doCommand(cmd);
} break;
case MSG_WINDOW_RESIZED: {
handleResized((MergedConfiguration) message.obj, message.arg1 != 0);
final boolean reportDraw = message.arg1 != 0;
mEngine.updateConfiguration(((MergedConfiguration) message.obj));
mEngine.updateSurface(true, false, reportDraw);
mEngine.doOffsetsChanged(true);
mEngine.scaleAndCropScreenshot();
} break;
case MSG_WINDOW_MOVED: {
// Do nothing. What does it mean for a Wallpaper to move?
@@ -2643,40 +2631,6 @@ public abstract class WallpaperService extends Service {
Log.w(TAG, "Unknown message type " + message.what);
}
}
/**
* In general this performs relayout for IWindow#resized. If there are several pending
* (in the message queue) MSG_WINDOW_RESIZED from server side, only the last one will be
* handled (ignore intermediate states). Note that this procedure cannot be skipped if the
* configuration is not changed because this is also used to dispatch insets changes.
*/
private void handleResized(MergedConfiguration config, boolean reportDraw) {
// The config can be null when retrying for a changed config from relayout, otherwise
// it is from IWindow#resized which always sends non-null config.
final int pendingCount = config != null ? mPendingResizeCount.decrementAndGet() : -1;
if (reportDraw) {
mReportDraw = true;
}
if (pendingCount > 0) {
if (DEBUG) {
Log.d(TAG, "Skip outdated resize, bounds="
+ config.getMergedConfiguration().windowConfiguration.getMaxBounds()
+ " pendingCount=" + pendingCount);
}
return;
}
if (config != null) {
if (DEBUG) {
Log.d(TAG, "Update config from resized, bounds="
+ config.getMergedConfiguration().windowConfiguration.getMaxBounds());
}
mEngine.mMergedConfiguration.setTo(config);
}
mEngine.updateSurface(true /* forceRelayout */, false /* forceReport */, mReportDraw);
mReportDraw = false;
mEngine.doOffsetsChanged(true);
mEngine.scaleAndCropScreenshot();
}
}
/**