Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc0fb78f authored by Eric Lin's avatar Eric Lin
Browse files

Remove WindowContextInfoChangeItem pooling (18/n).

Remove the use of ObjectPool in the creation and management of
WindowContextInfoChangeItem object. Instead of being obtained from the
pool, these objects are now directly instantiated, simplifying their
handling and aligning with the broader removal of the object pooling
mechanism.

Bug: 311089192
Test: atest FrameworksCoreTests:ClientTransactionItemTest
Flag: EXEMPT removing com.android.window.flags.disable_object_pool
Change-Id: I2fc0ab3c129d03d4940b451aadd90b9f14d4d5ec
parent b6f318ce
Loading
Loading
Loading
Loading
+12 −29
Original line number Diff line number Diff line
@@ -30,44 +30,27 @@ import java.util.Objects;

/**
 * {@link android.window.WindowContext} configuration change message.
 *
 * @hide
 */
public class WindowContextInfoChangeItem extends ClientTransactionItem {

    @Nullable
    private IBinder mClientToken;
    @Nullable
    private WindowContextInfo mInfo;

    @Override
    public void execute(@NonNull ClientTransactionHandler client,
            @NonNull PendingTransactionActions pendingActions) {
        client.handleWindowContextInfoChanged(mClientToken, mInfo);
    }
    @NonNull
    private final IBinder mClientToken;

    // ObjectPoolItem implementation
    @NonNull
    private final WindowContextInfo mInfo;

    private WindowContextInfoChangeItem() {}

    /** Obtains an instance initialized with provided params. */
    public static WindowContextInfoChangeItem obtain(
    public WindowContextInfoChangeItem(
            @NonNull IBinder clientToken, @NonNull Configuration config, int displayId) {
        WindowContextInfoChangeItem instance =
                ObjectPool.obtain(WindowContextInfoChangeItem.class);
        if (instance == null) {
            instance = new WindowContextInfoChangeItem();
        }
        instance.mClientToken = requireNonNull(clientToken);
        instance.mInfo = new WindowContextInfo(new Configuration(config), displayId);

        return instance;
        mClientToken = requireNonNull(clientToken);
        mInfo = new WindowContextInfo(new Configuration(config), displayId);
    }

    @Override
    public void recycle() {
        mClientToken = null;
        mInfo = null;
        ObjectPool.recycle(this);
    public void execute(@NonNull ClientTransactionHandler client,
            @NonNull PendingTransactionActions pendingActions) {
        client.handleWindowContextInfoChanged(mClientToken, mInfo);
    }

    // Parcelable implementation
@@ -82,7 +65,7 @@ public class WindowContextInfoChangeItem extends ClientTransactionItem {
    /** Reads from Parcel. */
    private WindowContextInfoChangeItem(@NonNull Parcel in) {
        mClientToken = in.readStrongBinder();
        mInfo = in.readTypedObject(WindowContextInfo.CREATOR);
        mInfo = requireNonNull(in.readTypedObject(WindowContextInfo.CREATOR));
    }

    public static final @NonNull Creator<WindowContextInfoChangeItem> CREATOR =
+2 −2
Original line number Diff line number Diff line
@@ -174,8 +174,8 @@ public class ClientTransactionItemTest {

    @Test
    public void testWindowContextInfoChangeItem_execute() {
        final WindowContextInfoChangeItem item = WindowContextInfoChangeItem
                .obtain(mWindowClientToken, mConfiguration, DEFAULT_DISPLAY);
        final WindowContextInfoChangeItem item = new WindowContextInfoChangeItem(mWindowClientToken,
                mConfiguration, DEFAULT_DISPLAY);

        item.execute(mHandler, mPendingActions);

+2 −2
Original line number Diff line number Diff line
@@ -330,8 +330,8 @@ class WindowContextListenerController {
            mLastReportedConfig.setTo(config);
            mLastReportedDisplay = displayId;

            mWpc.scheduleClientTransactionItem(WindowContextInfoChangeItem.obtain(
                    mClientToken, config, displayId));
            mWpc.scheduleClientTransactionItem(
                    new WindowContextInfoChangeItem(mClientToken, config, displayId));
            mHasPendingConfiguration = false;
        }