Skip to content

Commit 4283a42

Browse files
author
Chris Bellew
committed
Don't retain player fragment instance so that the fragment doesn't animate again when being resumed. Try to get the currently playing media from the appropriate subscription manager when initializing the player fragment, which fixes problem of previously playing media being displayed on orientation change.
1 parent 591be1d commit 4283a42

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

mobile/src/main/java/com/atomjack/vcfp/activities/MainActivity.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,17 +1070,21 @@ private void onFirstTimeScanFinished() {
10701070
private void handleShowNowPlayingIntent(Intent intent) {
10711071
client = intent.getParcelableExtra(com.atomjack.shared.Intent.EXTRA_CLIENT);
10721072
PlexMedia media = intent.getParcelableExtra(com.atomjack.shared.Intent.EXTRA_MEDIA);
1073-
Logger.d("[MainActivity] show now playing: %s", media.getTitle());
10741073
boolean fromWear = intent.getBooleanExtra(WearConstants.FROM_WEAR, false);
10751074
PlayerState state;
1075+
// Need to overwrite what media is playing from the subscription manager, if it exists.
10761076
if(client.isCastClient) {
10771077
state = castPlayerManager.getCurrentState();
1078+
if(castPlayerManager.isSubscribed() && castPlayerManager.getNowPlayingMedia() != null)
1079+
media = castPlayerManager.getNowPlayingMedia();
10781080
} else {
10791081
state = plexSubscription.getCurrentState();
1082+
if(plexSubscription.isSubscribed() && plexSubscription.getNowPlayingMedia() != null)
1083+
media = plexSubscription.getNowPlayingMedia();
10801084
plexSubscription.subscribe(client);
10811085
}
1086+
Logger.d("[MainActivity] show now playing: %s", media.getTitle());
10821087
int layout = getLayoutForMedia(media, state);
1083-
Logger.d("Layout: %d", layout);
10841088
if(layout != -1) {
10851089
playerFragment.init(layout, client, media, fromWear, plexSubscriptionListener);
10861090
if(playerFragment.isVisible())
@@ -2306,7 +2310,7 @@ private int getLayoutForMedia(PlexMedia media, PlayerState state) {
23062310
else if(!client.isCastClient && playerFragment instanceof CastPlayerFragment)
23072311
playerFragment = new PlexPlayerFragment();
23082312

2309-
playerFragment.setRetainInstance(true);
2313+
playerFragment.setRetainInstance(false);
23102314
playerFragment.setState(state);
23112315
playerFragment.setPosition(Integer.parseInt(media.viewOffset)/1000); // View offset from PMS is in ms
23122316

0 commit comments

Comments
 (0)