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

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

Remove TransferSplashStateItem pooling (14/n).

Remove the use of ObjectPool in the creation and management of
TransferSplashScreenViewStateItem 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 WmTests:ActivityRecordTests
Flag: EXEMPT removing com.android.window.flags.disable_object_pool
Change-Id: I289036210180e5922f6ff52a07d9e916d3d8e375
parent 0b0bfc3d
Loading
Loading
Loading
Loading
+17 −28
Original line number Original line Diff line number Diff line
@@ -29,12 +29,24 @@ import java.util.Objects;


/**
/**
 * Transfer a splash screen view to an Activity.
 * Transfer a splash screen view to an Activity.
 *
 * @hide
 * @hide
 */
 */
public class TransferSplashScreenViewStateItem extends ActivityTransactionItem {
public class TransferSplashScreenViewStateItem extends ActivityTransactionItem {


    private SplashScreenViewParcelable mSplashScreenViewParcelable;
    @Nullable
    private SurfaceControl mStartingWindowLeash;
    private final SplashScreenViewParcelable mSplashScreenViewParcelable;

    @Nullable
    private final SurfaceControl mStartingWindowLeash;

    public TransferSplashScreenViewStateItem(@NonNull IBinder activityToken,
            @Nullable SplashScreenViewParcelable parcelable,
            @Nullable SurfaceControl startingWindowLeash) {
        super(activityToken);
        mSplashScreenViewParcelable = parcelable;
        mStartingWindowLeash = startingWindowLeash;
    }


    @Override
    @Override
    public void execute(@NonNull ClientTransactionHandler client,
    public void execute(@NonNull ClientTransactionHandler client,
@@ -43,14 +55,9 @@ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem {
        client.handleAttachSplashScreenView(r, mSplashScreenViewParcelable, mStartingWindowLeash);
        client.handleAttachSplashScreenView(r, mSplashScreenViewParcelable, mStartingWindowLeash);
    }
    }


    @Override
    // Parcelable implementation
    public void recycle() {
        super.recycle();
        mSplashScreenViewParcelable = null;
        mStartingWindowLeash = null;
        ObjectPool.recycle(this);
    }


    /** Writes to Parcel. */
    @Override
    @Override
    public void writeToParcel(@NonNull Parcel dest, int flags) {
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        super.writeToParcel(dest, flags);
        super.writeToParcel(dest, flags);
@@ -58,31 +65,13 @@ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem {
        dest.writeTypedObject(mStartingWindowLeash, flags);
        dest.writeTypedObject(mStartingWindowLeash, flags);
    }
    }


    private TransferSplashScreenViewStateItem() {}
    /** Reads from Parcel. */

    private TransferSplashScreenViewStateItem(@NonNull Parcel in) {
    private TransferSplashScreenViewStateItem(@NonNull Parcel in) {
        super(in);
        super(in);
        mSplashScreenViewParcelable = in.readTypedObject(SplashScreenViewParcelable.CREATOR);
        mSplashScreenViewParcelable = in.readTypedObject(SplashScreenViewParcelable.CREATOR);
        mStartingWindowLeash = in.readTypedObject(SurfaceControl.CREATOR);
        mStartingWindowLeash = in.readTypedObject(SurfaceControl.CREATOR);
    }
    }


    /** Obtain an instance initialized with provided params. */
    @NonNull
    public static TransferSplashScreenViewStateItem obtain(
            @NonNull IBinder activityToken, @Nullable SplashScreenViewParcelable parcelable,
            @Nullable SurfaceControl startingWindowLeash) {
        TransferSplashScreenViewStateItem instance =
                ObjectPool.obtain(TransferSplashScreenViewStateItem.class);
        if (instance == null) {
            instance = new TransferSplashScreenViewStateItem();
        }
        instance.setActivityToken(activityToken);
        instance.mSplashScreenViewParcelable = parcelable;
        instance.mStartingWindowLeash = startingWindowLeash;

        return instance;
    }

    public static final @NonNull Creator<TransferSplashScreenViewStateItem> CREATOR =
    public static final @NonNull Creator<TransferSplashScreenViewStateItem> CREATOR =
            new Creator<>() {
            new Creator<>() {
                public TransferSplashScreenViewStateItem createFromParcel(@NonNull Parcel in) {
                public TransferSplashScreenViewStateItem createFromParcel(@NonNull Parcel in) {
+3 −3
Original line number Original line Diff line number Diff line
@@ -2812,9 +2812,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        }
        }
        try {
        try {
            mTransferringSplashScreenState = TRANSFER_SPLASH_SCREEN_ATTACH_TO_CLIENT;
            mTransferringSplashScreenState = TRANSFER_SPLASH_SCREEN_ATTACH_TO_CLIENT;
            mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(),
            final TransferSplashScreenViewStateItem item =
                    TransferSplashScreenViewStateItem.obtain(token, parcelable,
                    new TransferSplashScreenViewStateItem(token, parcelable, windowAnimationLeash);
                            windowAnimationLeash));
            mAtmService.getLifecycleManager().scheduleTransactionItem(app.getThread(), item);
            scheduleTransferSplashScreenTimeout();
            scheduleTransferSplashScreenTimeout();
        } catch (Exception e) {
        } catch (Exception e) {
            Slog.w(TAG, "onCopySplashScreenComplete fail: " + this);
            Slog.w(TAG, "onCopySplashScreenComplete fail: " + this);