diff options
author | Babak <babakbo@google.com> | 2020-08-14 15:24:58 -0700 |
---|---|---|
committer | Igor Razumeiko <igorr@google.com> | 2020-08-20 18:48:54 +0000 |
commit | 99ac72909c1fa7f36f4b7678488d66f6f340520d (patch) | |
tree | 516a67937c0c13a5a837b0ce4cc5a83795eed533 | |
parent | 7a8f620f515664882e15e519e2d71efdfd69e672 (diff) | |
download | Media-99ac72909c1fa7f36f4b7678488d66f6f340520d.tar.gz |
Fix queue button glitch for long lists
Bug: 165817252
Test: Manual
Change-Id: Iab35c725089bc2145a376fad9f4d5c0d8afda011
-rw-r--r-- | src/com/android/car/media/PlaybackFragment.java | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/com/android/car/media/PlaybackFragment.java b/src/com/android/car/media/PlaybackFragment.java index e1ffd93..1256ed3 100644 --- a/src/com/android/car/media/PlaybackFragment.java +++ b/src/com/android/car/media/PlaybackFragment.java @@ -643,8 +643,9 @@ public class PlaybackFragment extends Fragment { getPlaybackViewModel().hasQueue().observe(getViewLifecycleOwner(), hasQueue -> { boolean enableQueue = (hasQueue != null) && hasQueue; - mQueueIsVisible = mViewModel.getQueueVisible(); - setHasQueue(enableQueue); + boolean isQueueVisible = enableQueue && mViewModel.getQueueVisible(); + + setQueueState(enableQueue, isQueueVisible); }); getPlaybackViewModel().getProgress().observe(getViewLifecycleOwner(), playbackProgress -> @@ -681,7 +682,7 @@ public class PlaybackFragment extends Fragment { */ private void toggleQueueVisibility() { boolean updatedQueueVisibility = !mQueueIsVisible; - setQueueVisible(updatedQueueVisibility); + setQueueState(mHasQueue, updatedQueueVisibility); // When the visibility of queue is changed by the user, save the visibility into ViewModel // so that we can restore PlaybackFragment properly when needed. If it's changed by media @@ -690,7 +691,12 @@ public class PlaybackFragment extends Fragment { mViewModel.setQueueVisible(updatedQueueVisibility); } - private void setQueueVisible(boolean visible) { + private void setQueueState(boolean hasQueue, boolean visible) { + if (mHasQueue == hasQueue && mQueueIsVisible == visible) { + return; + } + + mHasQueue = hasQueue; mQueueIsVisible = visible; if (mToolbar != null) { @@ -719,12 +725,6 @@ public class PlaybackFragment extends Fragment { } } - /** Sets whether the source has a queue. */ - private void setHasQueue(boolean hasQueue) { - mHasQueue = hasQueue; - setQueueVisible(hasQueue && mQueueIsVisible); - } - private void onQueueItemClicked(MediaItemMetadata item) { if (mController != null) { mController.skipToQueueItem(item.getQueueId()); |