Skip to content

Commit b794da2

Browse files
authored
Merge pull request #1315 from nrkno/fix/negative-resolvedDuration
2 parents 663e570 + cf7bb96 commit b794da2

File tree

4 files changed

+28
-22
lines changed

4 files changed

+28
-22
lines changed

packages/job-worker/src/playout/resolvedPieces.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,11 @@ export function getResolvedPiecesForPartInstancesOnTimeline(
4646
if (!partInstancesInfo.current) return []
4747

4848
const currentPartStarted = partInstancesInfo.current.partStarted ?? now
49+
4950
const nextPartStarted =
50-
partInstancesInfo.current.partInstance.part.expectedDuration !== undefined
51+
partInstancesInfo.current.partInstance.part.expectedDuration !== undefined &&
52+
partInstancesInfo.current.partInstance.part.expectedDuration !== 0 &&
53+
partInstancesInfo.current.partInstance.part.autoNext
5154
? currentPartStarted + partInstancesInfo.current.partInstance.part.expectedDuration
5255
: null
5356

packages/job-worker/src/playout/timeline/generate.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BlueprintId } from '@sofie-automation/corelib/dist/dataModel/Ids'
1+
import { BlueprintId, TimelineHash } from '@sofie-automation/corelib/dist/dataModel/Ids'
22
import { JobContext } from '../../jobs'
33
import { ReadonlyDeep } from 'type-fest'
44
import {
@@ -131,13 +131,13 @@ export async function updateStudioTimeline(
131131
logAnyRemainingNowTimes(context, baselineObjects)
132132
}
133133

134-
saveTimeline(context, playoutModel, baselineObjects, versions)
134+
const timelineHash = saveTimeline(context, playoutModel, baselineObjects, versions)
135135

136136
if (studioBaseline) {
137137
updateBaselineExpectedPackagesOnStudio(context, playoutModel, studioBaseline)
138138
}
139139

140-
logger.debug('updateStudioTimeline done!')
140+
logger.verbose(`updateStudioTimeline done, hash: "${timelineHash}"`)
141141
if (span) span.end()
142142
}
143143

@@ -161,9 +161,8 @@ export async function updateTimeline(context: JobContext, playoutModel: PlayoutM
161161
logAnyRemainingNowTimes(context, timelineObjs)
162162
}
163163

164-
saveTimeline(context, playoutModel, timelineObjs, versions)
165-
166-
logger.debug('updateTimeline done!')
164+
const timelineHash = saveTimeline(context, playoutModel, timelineObjs, versions)
165+
logger.verbose(`updateTimeline done, hash: "${timelineHash}"`)
167166

168167
if (span) span.end()
169168
}
@@ -235,11 +234,13 @@ export function saveTimeline(
235234
studioPlayoutModel: StudioPlayoutModelBase,
236235
timelineObjs: TimelineObjGeneric[],
237236
generationVersions: TimelineCompleteGenerationVersions
238-
): void {
237+
): TimelineHash {
239238
const newTimeline = studioPlayoutModel.setTimeline(timelineObjs, generationVersions)
240239

241240
// Also do a fast-track for the timeline to be published faster:
242241
context.hackPublishTimelineToFastTrack(newTimeline)
242+
243+
return newTimeline.timelineHash
243244
}
244245

245246
export interface SelectedPartInstancesTimelineInfo {

packages/job-worker/src/playout/timings/partPlayback.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export async function onPartPlaybackStarted(
2929
const playingPartInstance = playoutModel.getPartInstance(data.partInstanceId)
3030
if (!playingPartInstance)
3131
throw new Error(
32-
`PartInstance "${data.partInstanceId}" in RundownPlayst "${playoutModel.playlistId}" not found!`
32+
`PartInstance "${data.partInstanceId}" in RundownPlaylist "${playoutModel.playlistId}" not found!`
3333
)
3434

3535
// make sure we don't run multiple times, even if TSR calls us multiple times
@@ -176,26 +176,26 @@ export function reportPartInstanceHasStarted(
176176
partInstance: PlayoutPartInstanceModel,
177177
timestamp: Time
178178
): void {
179-
if (partInstance) {
180-
const timestampUpdated = partInstance.setReportedStartedPlayback(timestamp)
181-
if (timestamp && !playoutModel.isMultiGatewayMode) {
179+
const timestampUpdated = partInstance.setReportedStartedPlayback(timestamp)
180+
181+
if (!playoutModel.isMultiGatewayMode) {
182+
if (timestamp) {
182183
partInstance.setPlannedStartedPlayback(timestamp)
183184
}
184-
185185
const previousPartInstance = playoutModel.previousPartInstance
186-
if (timestampUpdated && !playoutModel.isMultiGatewayMode && previousPartInstance) {
186+
if (timestampUpdated && previousPartInstance) {
187187
// Ensure the plannedStoppedPlayback is set for the previous partinstance too
188188
previousPartInstance.setPlannedStoppedPlayback(timestamp)
189189
}
190+
}
190191

191-
// Update the playlist:
192-
if (!partInstance.partInstance.part.untimed) {
193-
playoutModel.setRundownStartedPlayback(partInstance.partInstance.rundownId, timestamp)
194-
}
192+
// Update the playlist:
193+
if (!partInstance.partInstance.part.untimed) {
194+
playoutModel.setRundownStartedPlayback(partInstance.partInstance.rundownId, timestamp)
195+
}
195196

196-
if (timestampUpdated) {
197-
playoutModel.queuePartInstanceTimingEvent(partInstance.partInstance._id)
198-
}
197+
if (timestampUpdated) {
198+
playoutModel.queuePartInstanceTimingEvent(partInstance.partInstance._id)
199199
}
200200
}
201201

packages/job-worker/src/playout/timings/timelineTriggerTime.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,9 @@ function timelineTriggerTimeInner(
181181
}
182182
}
183183
if (tlChanged) {
184-
saveTimeline(context, studioPlayoutModel, timelineObjs, timeline.generationVersions)
184+
const timelineHash = saveTimeline(context, studioPlayoutModel, timelineObjs, timeline.generationVersions)
185+
186+
logger.verbose(`timelineTriggerTime: Updated Timeline, hash: "${timelineHash}"`)
185187
}
186188
}
187189

0 commit comments

Comments
 (0)