mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Try to fix nullreff
This commit is contained in:
parent
ce7744806c
commit
da5893b0f1
@ -266,8 +266,7 @@ namespace MediaBrowser.Api.Playback
|
|||||||
|
|
||||||
private T Clone<T>(T obj)
|
private T Clone<T>(T obj)
|
||||||
{
|
{
|
||||||
// Since we're going to be setting properties on MediaSourceInfos that come out of _mediaSourceManager, we should clone it
|
|
||||||
// Should we move this directly into MediaSourceManager?
|
|
||||||
var json = JsonSerializer.SerializeToUtf8Bytes(obj);
|
var json = JsonSerializer.SerializeToUtf8Bytes(obj);
|
||||||
return JsonSerializer.Deserialize<T>(json);
|
return JsonSerializer.Deserialize<T>(json);
|
||||||
}
|
}
|
||||||
@ -278,27 +277,20 @@ namespace MediaBrowser.Api.Playback
|
|||||||
var item = _libraryManager.GetItemById(id);
|
var item = _libraryManager.GetItemById(id);
|
||||||
var result = new PlaybackInfoResponse();
|
var result = new PlaybackInfoResponse();
|
||||||
|
|
||||||
|
MediaSourceInfo[] mediaSources;
|
||||||
if (string.IsNullOrWhiteSpace(liveStreamId))
|
if (string.IsNullOrWhiteSpace(liveStreamId))
|
||||||
{
|
{
|
||||||
IEnumerable<MediaSourceInfo> mediaSources;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// TODO handle supportedLiveMediaTypes ?
|
// TODO handle supportedLiveMediaTypes ?
|
||||||
mediaSources = await _mediaSourceManager.GetPlaybackMediaSources(item, user, true, false, CancellationToken.None).ConfigureAwait(false);
|
var mediaSourcesList = await _mediaSourceManager.GetPlaybackMediaSources(item, user, true, false, CancellationToken.None).ConfigureAwait(false);
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
mediaSources = new List<MediaSourceInfo>();
|
|
||||||
Logger.LogError(ex, "Could not find media sources for item id {id}", id);
|
|
||||||
// TODO PlaybackException ??
|
|
||||||
//result.ErrorCode = ex.ErrorCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
result.MediaSources = mediaSources.ToArray();
|
if (string.IsNullOrWhiteSpace(mediaSourceId))
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(mediaSourceId))
|
|
||||||
{
|
{
|
||||||
result.MediaSources = result.MediaSources
|
mediaSources = mediaSourcesList.ToArray();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mediaSources = mediaSourcesList
|
||||||
.Where(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase))
|
.Where(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase))
|
||||||
.ToArray();
|
.ToArray();
|
||||||
}
|
}
|
||||||
@ -307,11 +299,13 @@ namespace MediaBrowser.Api.Playback
|
|||||||
{
|
{
|
||||||
var mediaSource = await _mediaSourceManager.GetLiveStream(liveStreamId, CancellationToken.None).ConfigureAwait(false);
|
var mediaSource = await _mediaSourceManager.GetLiveStream(liveStreamId, CancellationToken.None).ConfigureAwait(false);
|
||||||
|
|
||||||
result.MediaSources = new MediaSourceInfo[] { mediaSource };
|
mediaSources = new MediaSourceInfo[] { mediaSource };
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result.MediaSources.Count == 0)
|
if (mediaSources.Length == 0)
|
||||||
{
|
{
|
||||||
|
result.MediaSources = Array.Empty<MediaSourceInfo>();
|
||||||
|
|
||||||
if (!result.ErrorCode.HasValue)
|
if (!result.ErrorCode.HasValue)
|
||||||
{
|
{
|
||||||
result.ErrorCode = PlaybackErrorCode.NoCompatibleStream;
|
result.ErrorCode = PlaybackErrorCode.NoCompatibleStream;
|
||||||
@ -319,7 +313,9 @@ namespace MediaBrowser.Api.Playback
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result.MediaSources = Clone(result.MediaSources);
|
// Since we're going to be setting properties on MediaSourceInfos that come out of _mediaSourceManager, we should clone it
|
||||||
|
// Should we move this directly into MediaSourceManager?
|
||||||
|
result.MediaSources = JsonSerializer.Deserialize<MediaSourceInfo[]>(JsonSerializer.SerializeToUtf8Bytes(mediaSources));
|
||||||
|
|
||||||
result.PlaySessionId = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
|
result.PlaySessionId = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user