/// <summary> /// Handles the Exited event of the CurrentProcess control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> void CurrentProcess_Exited(object sender, EventArgs e) { _currentProcess = null; _userInput.KeyDown -= KeyboardListener_KeyDown; var process = (Process)sender; var playlist = _playlist.ToList(); var index = CurrentPlaylistIndex; var ticks = CurrentPositionTicks; process.Dispose(); var media = index != -1 && playlist.Count > 0 ? playlist[index] : null; var args = new PlaybackStopEventArgs { Playlist = playlist, Player = this, EndingPlaylistIndex = index, EndingPositionTicks = ticks, EndingMedia = media }; EventHelper.QueueEventIfNotNull(PlaybackCompleted, this, args, Logger); _playbackManager.ReportPlaybackCompleted(args); OnPlayerExited(); }
internal async void OnPlaybackStopped(PlayableItem media, long?positionTicks, TrackCompletionReason reason, int?newTrackIndex) { DisposeMount(media); if (reason == TrackCompletionReason.Ended || reason == TrackCompletionReason.ChangeTrack) { var nextIndex = newTrackIndex ?? (CurrentPlaylistIndex + 1); if (nextIndex < CurrentPlayOptions.Items.Count) { await PlayTrack(nextIndex, null); return; } } DisposePlayer(); StopTranscoding(media); var args = new PlaybackStopEventArgs { Player = this, Playlist = _playlist, EndingMedia = media.OriginalItem, EndingPositionTicks = positionTicks }; EventHelper.FireEventIfNotNull(PlaybackCompleted, this, args, _logger); _playbackManager.ReportPlaybackCompleted(args); }
void _vlcControl_Stopped(VlcControl sender, VlcEventArgs <EventArgs> e) { var playlist = _playlist.ToList(); var index = CurrentPlaylistIndex; var ticks = CurrentPositionTicks; DisposePlayer(); var media = index != -1 && playlist.Count > 0 ? playlist[index] : null; var args = new PlaybackStopEventArgs { Playlist = playlist, Player = this, EndingPlaylistIndex = index, EndingPositionTicks = ticks, EndingMedia = media }; EventHelper.QueueEventIfNotNull(PlaybackCompleted, this, args, _logger); _playbackManager.ReportPlaybackCompleted(args); }