From dc2551542b70c08a6eaa5bd235e1067a32751ccd Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Fri, 20 Feb 2026 08:29:56 -0700 Subject: [PATCH] Remove reference validity checks, set cue track at load time, remove getTrack() --- cmd/qrunproxy/timeline.go | 47 +++++++++------------------------------ 1 file changed, 10 insertions(+), 37 deletions(-) diff --git a/cmd/qrunproxy/timeline.go b/cmd/qrunproxy/timeline.go index 8557a73..5696cca 100644 --- a/cmd/qrunproxy/timeline.go +++ b/cmd/qrunproxy/timeline.go @@ -100,6 +100,9 @@ func newTimelineBuilder(show Show) *timelineBuilder { b.trackIdx[track.ID] = i + 1 } for _, block := range show.Blocks { + if block.Type == "cue" { + block.Track = cueTrackID + } b.blocks[block.ID] = block } for _, trigger := range show.Triggers { @@ -128,23 +131,9 @@ func BuildTimeline(show Show) (Timeline, error) { } func (b *timelineBuilder) addConstraint(kind string, a, b2 cellID) { - if a.track < 0 || b2.track < 0 { - return - } b.constraints = append(b.constraints, constraint{kind: kind, a: a, b: b2}) } -func (b *timelineBuilder) getTrack(blockID string) string { - block, ok := b.blocks[blockID] - if !ok { - return "" - } - if block.Type == "cue" { - return cueTrackID - } - return block.Track -} - func getCueCells(block Block) []TimelineCell { return []TimelineCell{{ BlockID: block.ID, @@ -164,27 +153,23 @@ func getBlockCells(block Block) []TimelineCell { } func (b *timelineBuilder) findCell(blockID, event string) cellID { - trackID := b.getTrack(blockID) - if trackID == "" { - return cellID{-1, -1} - } - track := b.trackIdx[trackID] + track := b.trackIdx[b.blocks[blockID].Track] for i, c := range b.trackCells[track] { if !c.IsGap && c.BlockID == blockID && c.Event == event { return cellID{track: track, index: i} } } - return cellID{-1, -1} + panic("cell not found: " + blockID + " " + event) } func (b *timelineBuilder) endChainsSameTrack(blockID string) bool { - trackID := b.getTrack(blockID) + trackID := b.blocks[blockID].Track for _, trigger := range b.show.Triggers { if trigger.Source.Block != blockID || trigger.Source.Signal != "END" { continue } for _, target := range trigger.Targets { - if target.Hook == "START" && b.getTrack(target.Block) == trackID { + if target.Hook == "START" && b.blocks[target.Block].Track == trackID { return true } } @@ -193,12 +178,9 @@ func (b *timelineBuilder) endChainsSameTrack(blockID string) bool { } func (b *timelineBuilder) buildCells() { - for _, block := range b.show.Blocks { - trackID := b.getTrack(block.ID) - if trackID == "" { - continue - } - idx := b.trackIdx[trackID] + for _, sb := range b.show.Blocks { + block := b.blocks[sb.ID] + idx := b.trackIdx[block.Track] var cells []TimelineCell switch block.Type { case "cue": @@ -220,9 +202,6 @@ func (b *timelineBuilder) buildConstraints() { } sourceID := b.findCell(trigger.Source.Block, trigger.Source.Signal) - if sourceID.track < 0 { - continue - } group := exclusiveGroup{members: []cellID{sourceID}} hasCrossTrack := false @@ -230,9 +209,6 @@ func (b *timelineBuilder) buildConstraints() { allTargets := b.expandTargets(trigger.Targets) for _, target := range allTargets { targetID := b.findCell(target.Block, target.Hook) - if targetID.track < 0 { - continue - } if sourceID.track == targetID.track { b.addConstraint("next_row", sourceID, targetID) } else { @@ -272,9 +248,6 @@ func (b *timelineBuilder) expandTargets(targets []TriggerTarget) []TriggerTarget } func (b *timelineBuilder) setSignal(id cellID) { - if id.track < 0 { - return - } b.trackCells[id.track][id.index].IsSignal = true }