Merge "Avoid refreshing the media output dialog UI while dismissing." into udc-dev am: 04c08fe37c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23710325 Change-Id: Id44327e606017b2952453b27d0aa7a4662823339 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -105,6 +105,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
private WallpaperColors mWallpaperColors;
|
private WallpaperColors mWallpaperColors;
|
||||||
private boolean mShouldLaunchLeBroadcastDialog;
|
private boolean mShouldLaunchLeBroadcastDialog;
|
||||||
private boolean mIsLeBroadcastCallbackRegistered;
|
private boolean mIsLeBroadcastCallbackRegistered;
|
||||||
|
private boolean mDismissing;
|
||||||
|
|
||||||
MediaOutputBaseAdapter mAdapter;
|
MediaOutputBaseAdapter mAdapter;
|
||||||
|
|
||||||
@@ -265,13 +266,22 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
mDevicesRecyclerView.setHasFixedSize(false);
|
mDevicesRecyclerView.setHasFixedSize(false);
|
||||||
// Init bottom buttons
|
// Init bottom buttons
|
||||||
mDoneButton.setOnClickListener(v -> dismiss());
|
mDoneButton.setOnClickListener(v -> dismiss());
|
||||||
mStopButton.setOnClickListener(v -> {
|
mStopButton.setOnClickListener(v -> onStopButtonClick());
|
||||||
mMediaOutputController.releaseSession();
|
|
||||||
dismiss();
|
|
||||||
});
|
|
||||||
mAppButton.setOnClickListener(mMediaOutputController::tryToLaunchMediaApplication);
|
mAppButton.setOnClickListener(mMediaOutputController::tryToLaunchMediaApplication);
|
||||||
mMediaMetadataSectionLayout.setOnClickListener(
|
mMediaMetadataSectionLayout.setOnClickListener(
|
||||||
mMediaOutputController::tryToLaunchMediaApplication);
|
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
|
@Override
|
||||||
@@ -299,7 +309,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
void refresh(boolean deviceSetChanged) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
mMediaOutputController.setRefreshing(true);
|
mMediaOutputController.setRefreshing(true);
|
||||||
|
|||||||
Reference in New Issue
Block a user