9595import org .schabi .newpipe .player .PlayerService ;
9696import org .schabi .newpipe .player .PlayerType ;
9797import org .schabi .newpipe .player .event .OnKeyDownListener ;
98- import org .schabi .newpipe .player .event .PlayerHolderLifecycleEventListener ;
99- import org .schabi .newpipe .player .event .PlayerServiceEventListener ;
98+ import org .schabi .newpipe .player .event .PlayerServiceExtendedEventListener ;
10099import org .schabi .newpipe .player .helper .PlayerHelper ;
101100import org .schabi .newpipe .player .helper .PlayerHolder ;
102101import org .schabi .newpipe .player .playqueue .PlayQueue ;
137136public final class VideoDetailFragment
138137 extends BaseStateFragment <StreamInfo >
139138 implements BackPressable ,
140- PlayerServiceEventListener ,
141- PlayerHolderLifecycleEventListener ,
139+ PlayerServiceExtendedEventListener ,
142140 OnKeyDownListener {
143141 public static final String KEY_SWITCHING_PLAYERS = "switching_players" ;
144142
@@ -236,10 +234,14 @@ public final class VideoDetailFragment
236234 // Service management
237235 //////////////////////////////////////////////////////////////////////////*/
238236 @ Override
239- public void onServiceConnected (final PlayerService connectedPlayerService ,
240- final boolean playAfterConnect ) {
241- player = connectedPlayerService .getPlayer ();
237+ public void onServiceConnected (@ NonNull final PlayerService connectedPlayerService ) {
242238 playerService = connectedPlayerService ;
239+ }
240+
241+ @ Override
242+ public void onPlayerConnected (@ NonNull final Player connectedPlayer ,
243+ final boolean playAfterConnect ) {
244+ player = connectedPlayer ;
243245
244246 // It will do nothing if the player is not in fullscreen mode
245247 hideSystemUiIfNeeded ();
@@ -271,11 +273,18 @@ && isAutoplayEnabled()
271273 updateOverlayPlayQueueButtonVisibility ();
272274 }
273275
276+ @ Override
277+ public void onPlayerDisconnected () {
278+ player = null ;
279+ // the binding could be null at this point, if the app is finishing
280+ if (binding != null ) {
281+ restoreDefaultBrightness ();
282+ }
283+ }
284+
274285 @ Override
275286 public void onServiceDisconnected () {
276287 playerService = null ;
277- player = null ;
278- restoreDefaultBrightness ();
279288 }
280289
281290
@@ -394,7 +403,7 @@ public void onDestroy() {
394403 if (activity .isFinishing () && isPlayerAvailable () && player .videoPlayerSelected ()) {
395404 playerHolder .stopService ();
396405 } else {
397- playerHolder .unsetListeners ( );
406+ playerHolder .setListener ( null );
398407 }
399408
400409 PreferenceManager .getDefaultSharedPreferences (activity )
@@ -659,10 +668,10 @@ protected void initListeners() {
659668 });
660669
661670 setupBottomPlayer ();
662- if (playerHolder .isNotBoundYet ()) {
671+ if (! playerHolder .isBound ()) {
663672 setHeightThumbnail ();
664673 } else {
665- playerHolder .startService (false , this , this );
674+ playerHolder .startService (false , this );
666675 }
667676 }
668677
@@ -1053,7 +1062,7 @@ private void openPopupPlayer(final boolean append) {
10531062
10541063 // See UI changes while remote playQueue changes
10551064 if (!isPlayerAvailable ()) {
1056- playerHolder .startService (false , this , this );
1065+ playerHolder .startService (false , this );
10571066 } else {
10581067 // FIXME Workaround #7427
10591068 player .setRecovery ();
@@ -1116,7 +1125,7 @@ public void openVideoPlayerAutoFullscreen() {
11161125 private void openNormalBackgroundPlayer (final boolean append ) {
11171126 // See UI changes while remote playQueue changes
11181127 if (!isPlayerAvailable ()) {
1119- playerHolder .startService (false , this , this );
1128+ playerHolder .startService (false , this );
11201129 }
11211130
11221131 final PlayQueue queue = setupPlayQueueForIntent (append );
@@ -1130,7 +1139,7 @@ private void openNormalBackgroundPlayer(final boolean append) {
11301139
11311140 private void openMainPlayer () {
11321141 if (!isPlayerServiceAvailable ()) {
1133- playerHolder .startService (autoPlayEnabled , this , this );
1142+ playerHolder .startService (autoPlayEnabled , this );
11341143 return ;
11351144 }
11361145 if (currentInfo == null ) {
@@ -1385,11 +1394,9 @@ public void onReceive(final Context context, final Intent intent) {
13851394 bottomSheetBehavior .setState (BottomSheetBehavior .STATE_COLLAPSED );
13861395 }
13871396 // Rebound to the service if it was closed via notification or mini player
1388- if (playerHolder .isNotBoundYet ()) {
1397+ if (! playerHolder .isBound ()) {
13891398 playerHolder .startService (
1390- false ,
1391- VideoDetailFragment .this ,
1392- VideoDetailFragment .this );
1399+ false , VideoDetailFragment .this );
13931400 }
13941401 break ;
13951402 }
@@ -1838,13 +1845,16 @@ public void onPlayerError(final PlaybackException error, final boolean isCatchab
18381845
18391846 @ Override
18401847 public void onServiceStopped () {
1841- setOverlayPlayPauseImage (false );
1842- if (currentInfo != null ) {
1843- updateOverlayData (currentInfo .getName (),
1844- currentInfo .getUploaderName (),
1845- currentInfo .getThumbnails ());
1848+ // the binding could be null at this point, if the app is finishing
1849+ if (binding != null ) {
1850+ setOverlayPlayPauseImage (false );
1851+ if (currentInfo != null ) {
1852+ updateOverlayData (currentInfo .getName (),
1853+ currentInfo .getUploaderName (),
1854+ currentInfo .getThumbnails ());
1855+ }
1856+ updateOverlayPlayQueueButtonVisibility ();
18461857 }
1847- updateOverlayPlayQueueButtonVisibility ();
18481858 }
18491859
18501860 @ Override
0 commit comments