diff options
| author | 2023-06-22 18:35:06 +0000 | |
|---|---|---|
| committer | 2023-06-22 18:35:06 +0000 | |
| commit | 9cda33d6f769b636a4bae9eb9bbd69e17a0ee126 (patch) | |
| tree | 7ef46935fe58a1bea9b20e917ae80205b59795a8 | |
| parent | 3d9c2f7bb57e0c547dee41092d1d881349f0d466 (diff) | |
| parent | c772aaf57c5b2138829d298a97b551da3943c9a9 (diff) | |
Merge "Avoid refreshing the media output dialog UI while dismissing." into udc-dev am: 04c08fe37c am: c772aaf57c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23710325
Change-Id: Iea02229ce1d4ec962d11702b95ac4afebf10a028
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java index 0a5b4b3066a0..7712690de195 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java @@ -105,6 +105,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements private WallpaperColors mWallpaperColors; private boolean mShouldLaunchLeBroadcastDialog; private boolean mIsLeBroadcastCallbackRegistered; + private boolean mDismissing; MediaOutputBaseAdapter mAdapter; @@ -265,13 +266,22 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements mDevicesRecyclerView.setHasFixedSize(false); // Init bottom buttons mDoneButton.setOnClickListener(v -> dismiss()); - mStopButton.setOnClickListener(v -> { - mMediaOutputController.releaseSession(); - dismiss(); - }); + mStopButton.setOnClickListener(v -> onStopButtonClick()); mAppButton.setOnClickListener(mMediaOutputController::tryToLaunchMediaApplication); mMediaMetadataSectionLayout.setOnClickListener( mMediaOutputController::tryToLaunchMediaApplication); + + mDismissing = false; + } + + @Override + public void dismiss() { + // TODO(287191450): remove this once expensive binder calls are removed from refresh(). + // Due to these binder calls on the UI thread, calling refresh() during dismissal causes + // significant frame drops for the dismissal animation. Since the dialog is going away + // anyway, we use this state to turn refresh() into a no-op. + mDismissing = true; + super.dismiss(); } @Override @@ -299,7 +309,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements } void refresh(boolean deviceSetChanged) { - if (mMediaOutputController.isRefreshing()) { + // TODO(287191450): remove binder calls in this method from the UI thread. + // If the dialog is going away or is already refreshing, do nothing. + if (mDismissing || mMediaOutputController.isRefreshing()) { return; } mMediaOutputController.setRefreshing(true); |