diff options
Diffstat (limited to 'MediaBrowser.Dlna/PlayTo/PlayToController.cs')
| -rw-r--r-- | MediaBrowser.Dlna/PlayTo/PlayToController.cs | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs index 11fc8ecc35..7d06185740 100644 --- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs +++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs @@ -139,16 +139,21 @@ namespace MediaBrowser.Dlna.PlayTo try { var streamInfo = StreamParams.ParseFromUrl(e.OldMediaInfo.Url, _libraryManager); - var progress = GetProgressInfo(e.OldMediaInfo, streamInfo); + if (streamInfo.Item != null) + { + var progress = GetProgressInfo(e.OldMediaInfo, streamInfo); - var positionTicks = progress.PositionTicks; + var positionTicks = progress.PositionTicks; - ReportPlaybackStopped(e.OldMediaInfo, streamInfo, positionTicks); + ReportPlaybackStopped(e.OldMediaInfo, streamInfo, positionTicks); + } streamInfo = StreamParams.ParseFromUrl(e.NewMediaInfo.Url, _libraryManager); - progress = GetProgressInfo(e.NewMediaInfo, streamInfo); + if (streamInfo.Item == null) return; + + var newItemProgress = GetProgressInfo(e.NewMediaInfo, streamInfo); - await _sessionManager.OnPlaybackStart(progress).ConfigureAwait(false); + await _sessionManager.OnPlaybackStart(newItemProgress).ConfigureAwait(false); } catch (Exception ex) { @@ -161,6 +166,9 @@ namespace MediaBrowser.Dlna.PlayTo try { var streamInfo = StreamParams.ParseFromUrl(e.MediaInfo.Url, _libraryManager); + + if (streamInfo.Item == null) return; + var progress = GetProgressInfo(e.MediaInfo, streamInfo); var positionTicks = progress.PositionTicks; @@ -219,9 +227,14 @@ namespace MediaBrowser.Dlna.PlayTo { try { - var info = GetProgressInfo(e.MediaInfo); + var info = StreamParams.ParseFromUrl(e.MediaInfo.Url, _libraryManager); - await _sessionManager.OnPlaybackStart(info).ConfigureAwait(false); + if (info.Item != null) + { + var progress = GetProgressInfo(e.MediaInfo, info); + + await _sessionManager.OnPlaybackStart(progress).ConfigureAwait(false); + } } catch (Exception ex) { @@ -233,9 +246,14 @@ namespace MediaBrowser.Dlna.PlayTo { try { - var info = GetProgressInfo(e.MediaInfo); + var info = StreamParams.ParseFromUrl(e.MediaInfo.Url, _libraryManager); - await _sessionManager.OnPlaybackProgress(info).ConfigureAwait(false); + if (info.Item != null) + { + var progress = GetProgressInfo(e.MediaInfo, info); + + await _sessionManager.OnPlaybackProgress(progress).ConfigureAwait(false); + } } catch (Exception ex) { @@ -243,13 +261,6 @@ namespace MediaBrowser.Dlna.PlayTo } } - private PlaybackStartInfo GetProgressInfo(uBaseObject mediaInfo) - { - var info = StreamParams.ParseFromUrl(mediaInfo.Url, _libraryManager); - - return GetProgressInfo(mediaInfo, info); - } - private PlaybackStartInfo GetProgressInfo(uBaseObject mediaInfo, StreamParams info) { var ticks = _device.Position.Ticks; @@ -736,10 +747,10 @@ namespace MediaBrowser.Dlna.PlayTo if (media != null) { var info = StreamParams.ParseFromUrl(media.Url, _libraryManager); - var progress = GetProgressInfo(media, info); if (info.Item != null) { + var progress = GetProgressInfo(media, info); var newPosition = progress.PositionTicks ?? 0; var user = _session.UserId.HasValue ? _userManager.GetUserById(_session.UserId.Value) : null; @@ -762,10 +773,10 @@ namespace MediaBrowser.Dlna.PlayTo if (media != null) { var info = StreamParams.ParseFromUrl(media.Url, _libraryManager); - var progress = GetProgressInfo(media, info); if (info.Item != null) { + var progress = GetProgressInfo(media, info); var newPosition = progress.PositionTicks ?? 0; var user = _session.UserId.HasValue ? _userManager.GetUserById(_session.UserId.Value) : null; @@ -829,7 +840,9 @@ namespace MediaBrowser.Dlna.PlayTo ItemId = GetItemId(url) }; - if (string.IsNullOrWhiteSpace(request.ItemId)) + Guid parsedId; + + if (string.IsNullOrWhiteSpace(request.ItemId) || !Guid.TryParse(request.ItemId, out parsedId)) { return request; } @@ -882,7 +895,7 @@ namespace MediaBrowser.Dlna.PlayTo request.Item = string.IsNullOrWhiteSpace(request.ItemId) ? null - : libraryManager.GetItemById(new Guid(request.ItemId)); + : libraryManager.GetItemById(parsedId); var hasMediaSources = request.Item as IHasMediaSources; |
