diff options
Diffstat (limited to 'android/app/servertransaction/PipModeChangeItem.java')
-rw-r--r-- | android/app/servertransaction/PipModeChangeItem.java | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/android/app/servertransaction/PipModeChangeItem.java b/android/app/servertransaction/PipModeChangeItem.java index 923839ee..b999cd7e 100644 --- a/android/app/servertransaction/PipModeChangeItem.java +++ b/android/app/servertransaction/PipModeChangeItem.java @@ -16,10 +16,13 @@ package android.app.servertransaction; +import android.app.ClientTransactionHandler; import android.content.res.Configuration; import android.os.IBinder; import android.os.Parcel; +import java.util.Objects; + /** * Picture in picture mode change message. * @hide @@ -28,17 +31,37 @@ import android.os.Parcel; // communicate multi-window mode change with WindowConfiguration. public class PipModeChangeItem extends ClientTransactionItem { - private final boolean mIsInPipMode; - private final Configuration mOverrideConfig; + private boolean mIsInPipMode; + private Configuration mOverrideConfig; + + @Override + public void execute(ClientTransactionHandler client, IBinder token, + PendingTransactionActions pendingActions) { + client.handlePictureInPictureModeChanged(token, mIsInPipMode, mOverrideConfig); + } + + + // ObjectPoolItem implementation - public PipModeChangeItem(boolean isInPipMode, Configuration overrideConfig) { - mIsInPipMode = isInPipMode; - mOverrideConfig = overrideConfig; + private PipModeChangeItem() {} + + /** Obtain an instance initialized with provided params. */ + public static PipModeChangeItem obtain(boolean isInPipMode, Configuration overrideConfig) { + PipModeChangeItem instance = ObjectPool.obtain(PipModeChangeItem.class); + if (instance == null) { + instance = new PipModeChangeItem(); + } + instance.mIsInPipMode = isInPipMode; + instance.mOverrideConfig = overrideConfig; + + return instance; } @Override - public void execute(android.app.ClientTransactionHandler client, IBinder token) { - client.handlePictureInPictureModeChanged(token, mIsInPipMode, mOverrideConfig); + public void recycle() { + mIsInPipMode = false; + mOverrideConfig = null; + ObjectPool.recycle(this); } @@ -76,7 +99,8 @@ public class PipModeChangeItem extends ClientTransactionItem { return false; } final PipModeChangeItem other = (PipModeChangeItem) o; - return mIsInPipMode == other.mIsInPipMode && mOverrideConfig.equals(other.mOverrideConfig); + return mIsInPipMode == other.mIsInPipMode + && Objects.equals(mOverrideConfig, other.mOverrideConfig); } @Override @@ -86,4 +110,10 @@ public class PipModeChangeItem extends ClientTransactionItem { result = 31 * result + mOverrideConfig.hashCode(); return result; } + + @Override + public String toString() { + return "PipModeChangeItem{isInPipMode=" + mIsInPipMode + + ",overrideConfig=" + mOverrideConfig + "}"; + } } |