Merge "Use getSyncTransaction in SurfaceAnimator and SurfaceFreezer" into tm-dev
This commit is contained in:
@@ -50,10 +50,15 @@ class Dimmer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SurfaceControl.Transaction getPendingTransaction() {
|
public SurfaceControl.Transaction getSyncTransaction() {
|
||||||
return mHost.getSyncTransaction();
|
return mHost.getSyncTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SurfaceControl.Transaction getPendingTransaction() {
|
||||||
|
return mHost.getPendingTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void commitPendingTransaction() {
|
public void commitPendingTransaction() {
|
||||||
mHost.commitPendingTransaction();
|
mHost.commitPendingTransaction();
|
||||||
@@ -105,7 +110,7 @@ class Dimmer {
|
|||||||
|
|
||||||
void removeSurface() {
|
void removeSurface() {
|
||||||
if (mDimLayer != null && mDimLayer.isValid()) {
|
if (mDimLayer != null && mDimLayer.isValid()) {
|
||||||
getPendingTransaction().remove(mDimLayer);
|
getSyncTransaction().remove(mDimLayer);
|
||||||
}
|
}
|
||||||
mDimLayer = null;
|
mDimLayer = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -565,6 +565,7 @@ class ScreenRotationAnimation {
|
|||||||
|
|
||||||
private SimpleSurfaceAnimatable.Builder initializeBuilder() {
|
private SimpleSurfaceAnimatable.Builder initializeBuilder() {
|
||||||
return new SimpleSurfaceAnimatable.Builder()
|
return new SimpleSurfaceAnimatable.Builder()
|
||||||
|
.setSyncTransactionSupplier(mDisplayContent::getSyncTransaction)
|
||||||
.setPendingTransactionSupplier(mDisplayContent::getPendingTransaction)
|
.setPendingTransactionSupplier(mDisplayContent::getPendingTransaction)
|
||||||
.setCommitTransactionRunnable(mDisplayContent::commitPendingTransaction)
|
.setCommitTransactionRunnable(mDisplayContent::commitPendingTransaction)
|
||||||
.setAnimationLeashSupplier(mDisplayContent::makeOverlay);
|
.setAnimationLeashSupplier(mDisplayContent::makeOverlay);
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
|
|||||||
private final SurfaceControl mParentSurfaceControl;
|
private final SurfaceControl mParentSurfaceControl;
|
||||||
private final Runnable mCommitTransactionRunnable;
|
private final Runnable mCommitTransactionRunnable;
|
||||||
private final Supplier<SurfaceControl.Builder> mAnimationLeashFactory;
|
private final Supplier<SurfaceControl.Builder> mAnimationLeashFactory;
|
||||||
|
private final Supplier<SurfaceControl.Transaction> mSyncTransaction;
|
||||||
private final Supplier<SurfaceControl.Transaction> mPendingTransaction;
|
private final Supplier<SurfaceControl.Transaction> mPendingTransaction;
|
||||||
private final BiConsumer<SurfaceControl.Transaction, SurfaceControl> mOnAnimationLeashCreated;
|
private final BiConsumer<SurfaceControl.Transaction, SurfaceControl> mOnAnimationLeashCreated;
|
||||||
private final Consumer<SurfaceControl.Transaction> mOnAnimationLeashLost;
|
private final Consumer<SurfaceControl.Transaction> mOnAnimationLeashLost;
|
||||||
@@ -60,10 +61,16 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
|
|||||||
mAnimationLeashFactory = builder.mAnimationLeashFactory;
|
mAnimationLeashFactory = builder.mAnimationLeashFactory;
|
||||||
mOnAnimationLeashCreated = builder.mOnAnimationLeashCreated;
|
mOnAnimationLeashCreated = builder.mOnAnimationLeashCreated;
|
||||||
mOnAnimationLeashLost = builder.mOnAnimationLeashLost;
|
mOnAnimationLeashLost = builder.mOnAnimationLeashLost;
|
||||||
|
mSyncTransaction = builder.mSyncTransactionSupplier;
|
||||||
mPendingTransaction = builder.mPendingTransactionSupplier;
|
mPendingTransaction = builder.mPendingTransactionSupplier;
|
||||||
mOnAnimationFinished = builder.mOnAnimationFinished;
|
mOnAnimationFinished = builder.mOnAnimationFinished;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SurfaceControl.Transaction getSyncTransaction() {
|
||||||
|
return mSyncTransaction.get();
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public SurfaceControl.Transaction getPendingTransaction() {
|
public SurfaceControl.Transaction getPendingTransaction() {
|
||||||
@@ -159,6 +166,9 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private Consumer<Runnable> mOnAnimationFinished = null;
|
private Consumer<Runnable> mOnAnimationFinished = null;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private Supplier<SurfaceControl.Transaction> mSyncTransactionSupplier;
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private Supplier<SurfaceControl.Transaction> mPendingTransactionSupplier;
|
private Supplier<SurfaceControl.Transaction> mPendingTransactionSupplier;
|
||||||
|
|
||||||
@@ -206,6 +216,15 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SurfaceAnimator.Animatable#getSyncTransaction()
|
||||||
|
*/
|
||||||
|
public Builder setSyncTransactionSupplier(
|
||||||
|
@NonNull Supplier<SurfaceControl.Transaction> syncTransactionSupplier) {
|
||||||
|
mSyncTransactionSupplier = syncTransactionSupplier;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see SurfaceAnimator.Animatable#getPendingTransaction()
|
* @see SurfaceAnimator.Animatable#getPendingTransaction()
|
||||||
*/
|
*/
|
||||||
@@ -290,6 +309,9 @@ public class SimpleSurfaceAnimatable implements SurfaceAnimator.Animatable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SurfaceAnimator.Animatable build() {
|
public SurfaceAnimator.Animatable build() {
|
||||||
|
if (mSyncTransactionSupplier == null) {
|
||||||
|
throw new IllegalArgumentException("mSyncTransactionSupplier cannot be null");
|
||||||
|
}
|
||||||
if (mPendingTransactionSupplier == null) {
|
if (mPendingTransactionSupplier == null) {
|
||||||
throw new IllegalArgumentException("mPendingTransactionSupplier cannot be null");
|
throw new IllegalArgumentException("mPendingTransactionSupplier cannot be null");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ class SurfaceAnimator {
|
|||||||
}
|
}
|
||||||
final OnAnimationFinishedCallback animationFinishCallback =
|
final OnAnimationFinishedCallback animationFinishCallback =
|
||||||
mSurfaceAnimationFinishedCallback;
|
mSurfaceAnimationFinishedCallback;
|
||||||
reset(mAnimatable.getPendingTransaction(), true /* destroyLeash */);
|
reset(mAnimatable.getSyncTransaction(), true /* destroyLeash */);
|
||||||
if (staticAnimationFinishedCallback != null) {
|
if (staticAnimationFinishedCallback != null) {
|
||||||
staticAnimationFinishedCallback.onAnimationFinished(type, anim);
|
staticAnimationFinishedCallback.onAnimationFinished(type, anim);
|
||||||
}
|
}
|
||||||
@@ -234,7 +234,7 @@ class SurfaceAnimator {
|
|||||||
final boolean delayed = mAnimationStartDelayed;
|
final boolean delayed = mAnimationStartDelayed;
|
||||||
mAnimationStartDelayed = false;
|
mAnimationStartDelayed = false;
|
||||||
if (delayed && mAnimation != null) {
|
if (delayed && mAnimation != null) {
|
||||||
mAnimation.startAnimation(mLeash, mAnimatable.getPendingTransaction(),
|
mAnimation.startAnimation(mLeash, mAnimatable.getSyncTransaction(),
|
||||||
mAnimationType, mInnerAnimationFinishedCallback);
|
mAnimationType, mInnerAnimationFinishedCallback);
|
||||||
mAnimatable.commitPendingTransaction();
|
mAnimatable.commitPendingTransaction();
|
||||||
}
|
}
|
||||||
@@ -264,7 +264,7 @@ class SurfaceAnimator {
|
|||||||
* Cancels any currently running animation.
|
* Cancels any currently running animation.
|
||||||
*/
|
*/
|
||||||
void cancelAnimation() {
|
void cancelAnimation() {
|
||||||
cancelAnimation(mAnimatable.getPendingTransaction(), false /* restarting */,
|
cancelAnimation(mAnimatable.getSyncTransaction(), false /* restarting */,
|
||||||
true /* forwardCancel */);
|
true /* forwardCancel */);
|
||||||
mAnimatable.commitPendingTransaction();
|
mAnimatable.commitPendingTransaction();
|
||||||
}
|
}
|
||||||
@@ -319,7 +319,7 @@ class SurfaceAnimator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
endDelayingAnimationStart();
|
endDelayingAnimationStart();
|
||||||
final Transaction t = mAnimatable.getPendingTransaction();
|
final Transaction t = mAnimatable.getSyncTransaction();
|
||||||
cancelAnimation(t, true /* restarting */, true /* forwardCancel */);
|
cancelAnimation(t, true /* restarting */, true /* forwardCancel */);
|
||||||
mLeash = from.mLeash;
|
mLeash = from.mLeash;
|
||||||
mAnimation = from.mAnimation;
|
mAnimation = from.mAnimation;
|
||||||
@@ -619,6 +619,12 @@ class SurfaceAnimator {
|
|||||||
*/
|
*/
|
||||||
interface Animatable {
|
interface Animatable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use this method instead of {@link #getPendingTransaction()} if the transaction should be
|
||||||
|
* synchronized with the client.
|
||||||
|
*/
|
||||||
|
@NonNull Transaction getSyncTransaction();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The pending transaction that will be committed in the next frame.
|
* @return The pending transaction that will be committed in the next frame.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1004,7 +1004,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
|||||||
void onDisplayChanged(DisplayContent dc) {
|
void onDisplayChanged(DisplayContent dc) {
|
||||||
if (mDisplayContent != null && mDisplayContent.mChangingContainers.remove(this)) {
|
if (mDisplayContent != null && mDisplayContent.mChangingContainers.remove(this)) {
|
||||||
// Cancel any change transition queued-up for this container on the old display.
|
// Cancel any change transition queued-up for this container on the old display.
|
||||||
mSurfaceFreezer.unfreeze(getPendingTransaction());
|
mSurfaceFreezer.unfreeze(getSyncTransaction());
|
||||||
}
|
}
|
||||||
mDisplayContent = dc;
|
mDisplayContent = dc;
|
||||||
if (dc != null && dc != this) {
|
if (dc != null && dc != this) {
|
||||||
@@ -2697,6 +2697,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
|||||||
* @return {@link #mBLASTSyncTransaction} if available. Otherwise, returns
|
* @return {@link #mBLASTSyncTransaction} if available. Otherwise, returns
|
||||||
* {@link #getPendingTransaction()}
|
* {@link #getPendingTransaction()}
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public Transaction getSyncTransaction() {
|
public Transaction getSyncTransaction() {
|
||||||
if (mSyncTransactionCommitCallbackDepth > 0) {
|
if (mSyncTransactionCommitCallbackDepth > 0) {
|
||||||
return mSyncTransaction;
|
return mSyncTransaction;
|
||||||
@@ -2767,7 +2768,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
|||||||
void cancelAnimation() {
|
void cancelAnimation() {
|
||||||
doAnimationFinished(mSurfaceAnimator.getAnimationType(), mSurfaceAnimator.getAnimation());
|
doAnimationFinished(mSurfaceAnimator.getAnimationType(), mSurfaceAnimator.getAnimation());
|
||||||
mSurfaceAnimator.cancelAnimation();
|
mSurfaceAnimator.cancelAnimation();
|
||||||
mSurfaceFreezer.unfreeze(getPendingTransaction());
|
mSurfaceFreezer.unfreeze(getSyncTransaction());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Whether we can start change transition with this window and current display status. */
|
/** Whether we can start change transition with this window and current display status. */
|
||||||
|
|||||||
@@ -166,6 +166,11 @@ class WindowContainerThumbnail implements Animatable {
|
|||||||
proto.end(token);
|
proto.end(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Transaction getSyncTransaction() {
|
||||||
|
return mWindowContainer.getSyncTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Transaction getPendingTransaction() {
|
public Transaction getPendingTransaction() {
|
||||||
return mWindowContainer.getPendingTransaction();
|
return mWindowContainer.getPendingTransaction();
|
||||||
|
|||||||
@@ -63,6 +63,11 @@ public class DimmerTests extends WindowTestsBase {
|
|||||||
return mControl;
|
return mControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SurfaceControl.Transaction getSyncTransaction() {
|
||||||
|
return mTransaction;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SurfaceControl.Transaction getPendingTransaction() {
|
public SurfaceControl.Transaction getPendingTransaction() {
|
||||||
return mTransaction;
|
return mTransaction;
|
||||||
@@ -101,6 +106,11 @@ public class DimmerTests extends WindowTestsBase {
|
|||||||
return mHostControl;
|
return mHostControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SurfaceControl.Transaction getSyncTransaction() {
|
||||||
|
return mHostTransaction;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SurfaceControl.Transaction getPendingTransaction() {
|
public SurfaceControl.Transaction getPendingTransaction() {
|
||||||
return mHostTransaction;
|
return mHostTransaction;
|
||||||
|
|||||||
@@ -337,6 +337,11 @@ public class SurfaceAnimatorTest extends WindowTestsBase {
|
|||||||
mSurfaceAnimator = new SurfaceAnimator(this, mFinishedCallback, wm);
|
mSurfaceAnimator = new SurfaceAnimator(this, mFinishedCallback, wm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SurfaceControl.Transaction getSyncTransaction() {
|
||||||
|
return mTransaction;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Transaction getPendingTransaction() {
|
public Transaction getPendingTransaction() {
|
||||||
return mTransaction;
|
return mTransaction;
|
||||||
|
|||||||
Reference in New Issue
Block a user