Esempio n. 1
0
 private void OnEos()
 {
     if (!next_track_pending &&
         (!GaplessEnabled || (CurrentTrack != null && CurrentTrack.HasAttribute(TrackMediaAttributes.VideoStream))))
     {
         // We don't request next track in OnEoS if gapless playback is enabled and current track has no video stream contained.
         // The request next track is already called in OnAboutToFinish().
         OnEventChanged(PlayerEvent.RequestNextTrack);
     }
     else if (pending_uri != null)
     {
         Log.Warning("[Gapless] EOS signalled while waiting for next track.  This means that Banshee " +
                     "was too slow at calculating what track to play next.  " +
                     "If this happens frequently, please file a bug");
         OnStateChanged(PlayerState.Loading);
         OpenUri(pending_uri, pending_maybe_video);
         Play();
         pending_uri = null;
     }
     else if (!GaplessEnabled || (CurrentTrack != null && CurrentTrack.HasAttribute(TrackMediaAttributes.VideoStream)))
     {
         // This should be unreachable - the RequestNextTrack event is delegated to the main thread
         // and so blocks the bus callback from delivering the EOS message.
         //
         // Playback should continue as normal from here, when the RequestNextTrack message gets handled.
         Log.Warning("[Gapless] EndOfStream message received before the next track has been set.  " +
                     "If this happens frequently, please file a bug");
     }
     else
     {
         Log.Debug("[Gapless] Reach the last music under repeat off mode");
     }
 }