Merge pull request #939 from jimdogx/JF-501-Crash-when-watching-inprogress-recording

Don't crash when viewing in progress recording.
This commit is contained in:
Jimi 2023-01-05 06:36:59 -07:00 committed by GitHub
commit 3c850dcab0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 6 deletions

View File

@ -129,7 +129,7 @@ sub loadItems()
tmp = CreateObject("roSGNode", "ChannelData") tmp = CreateObject("roSGNode", "ChannelData")
else if item.Type = "Folder" or item.Type = "ChannelFolderItem" or item.Type = "CollectionFolder" else if item.Type = "Folder" or item.Type = "ChannelFolderItem" or item.Type = "CollectionFolder"
tmp = CreateObject("roSGNode", "FolderData") tmp = CreateObject("roSGNode", "FolderData")
else if item.Type = "Video" else if item.Type = "Video" or item.Type = "Recording"
tmp = CreateObject("roSGNode", "VideoData") tmp = CreateObject("roSGNode", "VideoData")
else if item.Type = "Photo" else if item.Type = "Photo"
tmp = CreateObject("roSGNode", "PhotoData") tmp = CreateObject("roSGNode", "PhotoData")

View File

@ -30,7 +30,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
' Special handling for "Programs" or "Vidoes" launched from "On Now" or elsewhere on the home screen... ' Special handling for "Programs" or "Vidoes" launched from "On Now" or elsewhere on the home screen...
' basically anything that is a Live Channel. ' basically anything that is a Live Channel.
if meta.json.ChannelId <> invalid if isValid(meta?.json?.ChannelId)
if meta.json.EpisodeTitle <> invalid if meta.json.EpisodeTitle <> invalid
meta.title = meta.json.EpisodeTitle meta.title = meta.json.EpisodeTitle
else if meta.json.Name <> invalid else if meta.json.Name <> invalid
@ -53,7 +53,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
video.content.title = meta.title video.content.title = meta.title
video.showID = meta.showID video.showID = meta.showID
if playbackPosition = -1 if playbackPosition = -1 and isValid(meta.json)
playbackPosition = meta.json.UserData.PlaybackPositionTicks playbackPosition = meta.json.UserData.PlaybackPositionTicks
if allowResumeDialog if allowResumeDialog
if playbackPosition > 0 if playbackPosition > 0
@ -175,7 +175,17 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
if mediaSourceId = invalid if mediaSourceId = invalid
mediaSourceId = video.id mediaSourceId = video.id
end if end if
if meta.live then mediaSourceId = "" ' Don't send mediaSourceId for Live media
' Don't send mediaSourceId for Live Media
' Note: Recordings in progress will have meta.live = invalid, but we still don't want to send mediaSourceId
if not isValid(meta.live)
meta.live = false
mediaSourceId = ""
else
if meta.live
mediaSourceId = ""
end if
end if
m.playbackInfo = ItemPostPlaybackInfo(video.id, mediaSourceId, audio_stream_idx, subtitle_idx, playbackPosition) m.playbackInfo = ItemPostPlaybackInfo(video.id, mediaSourceId, audio_stream_idx, subtitle_idx, playbackPosition)
video.videoId = video.id video.videoId = video.id
@ -197,7 +207,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
video.container = getContainerType(meta) video.container = getContainerType(meta)
if m.playbackInfo.MediaSources[0] = invalid if not isValid(m.playbackInfo.MediaSources[0]) and isValid(meta.json)
m.playbackInfo = meta.json m.playbackInfo = meta.json
end if end if
@ -395,7 +405,7 @@ end function
function getContainerType(meta as object) as string function getContainerType(meta as object) as string
' Determine the file type of the video file source ' Determine the file type of the video file source
if meta.json.mediaSources = invalid then return "" if not IsValid(meta.json) or not isValid(meta.json.mediaSources) then return ""
container = meta.json.mediaSources[0].container container = meta.json.mediaSources[0].container
if container = invalid if container = invalid

View File

@ -156,6 +156,10 @@ function ItemMetaData(id as string)
tmp.json = data tmp.json = data
return tmp return tmp
else if data.type = "Recording"
' We know it's "Recording", but we don't do any special preprocessing
' for this data type at the moment, so just return the json.
return data
else else
print "Items.brs::ItemMetaData processed unhandled type: " data.type print "Items.brs::ItemMetaData processed unhandled type: " data.type
' Return json if we don't know what it is ' Return json if we don't know what it is