Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }