Fix issue where video controls may be missing.

Fixes #9121
This commit is contained in:
Greyson Parrelli 2019-10-23 14:36:50 -07:00
parent 7507dadbe7
commit d075a33d4e
2 changed files with 26 additions and 8 deletions

View File

@ -239,6 +239,11 @@ public final class MediaPreviewActivity extends PassphraseRequiredActionBarActiv
return; return;
} }
if (!((MediaItemAdapter) mediaPager.getAdapter()).hasFragmentFor(mediaPager.getCurrentItem())) {
Log.d(TAG, "MediaItemAdapter wasn't ready. Posting again...");
viewModel.resubmitPreviewData();
}
View playbackControls = ((MediaItemAdapter) mediaPager.getAdapter()).getPlaybackControls(mediaPager.getCurrentItem()); View playbackControls = ((MediaItemAdapter) mediaPager.getAdapter()).getPlaybackControls(mediaPager.getCurrentItem());
if (previewData.getAlbumThumbnails().isEmpty() && previewData.getCaption() == null && playbackControls == null) { if (previewData.getAlbumThumbnails().isEmpty() && previewData.getCaption() == null && playbackControls == null) {
@ -427,16 +432,14 @@ public final class MediaPreviewActivity extends PassphraseRequiredActionBarActiv
mediaPager.setAdapter(adapter); mediaPager.setAdapter(adapter);
adapter.setActive(true); adapter.setActive(true);
Util.postToMain(() -> { viewModel.setCursor(this, data.first, leftIsRecent);
viewModel.setCursor(this, data.first, leftIsRecent);
int item = restartItem >= 0 ? restartItem : data.second; int item = restartItem >= 0 ? restartItem : data.second;
mediaPager.setCurrentItem(item); mediaPager.setCurrentItem(item);
if (item == 0) { if (item == 0) {
viewPagerListener.onPageSelected(0); viewPagerListener.onPageSelected(0);
} }
});
} }
} }
@ -565,6 +568,11 @@ public final class MediaPreviewActivity extends PassphraseRequiredActionBarActiv
} }
return null; return null;
} }
@Override
public boolean hasFragmentFor(int position) {
return mediaPreviewFragment != null;
}
} }
private static void anchorMarginsToBottomInsets(@NonNull View viewToAnchor) { private static void anchorMarginsToBottomInsets(@NonNull View viewToAnchor) {
@ -703,6 +711,11 @@ public final class MediaPreviewActivity extends PassphraseRequiredActionBarActiv
return null; return null;
} }
@Override
public boolean hasFragmentFor(int position) {
return mediaFragments.containsKey(position);
}
private int getCursorPosition(int position) { private int getCursorPosition(int position) {
if (leftIsRecent) return position; if (leftIsRecent) return position;
else return cursor.getCount() - 1 - position; else return cursor.getCount() - 1 - position;
@ -737,5 +750,6 @@ public final class MediaPreviewActivity extends PassphraseRequiredActionBarActiv
MediaItem getMediaItemFor(int position); MediaItem getMediaItemFor(int position);
void pause(int position); void pause(int position);
@Nullable View getPlaybackControls(int position); @Nullable View getPlaybackControls(int position);
boolean hasFragmentFor(int position);
} }
} }

View File

@ -83,6 +83,10 @@ public class MediaPreviewViewModel extends ViewModel {
rail.indexOf(activeMedia))); rail.indexOf(activeMedia)));
} }
public void resubmitPreviewData() {
previewData.postValue(previewData.getValue());
}
private int getCursorPosition(int position) { private int getCursorPosition(int position) {
if (cursor == null) { if (cursor == null) {
return 0; return 0;