Timers: heuristically bind LTC when the stage layout omits the field
Verified against ProPresenter 21.4: the legacy stage-display protocol (ptl 610 — the only version PP21 accepts; newer values get 'out of date') omits stage objects it predates, so a timecode field labeled LTC never appears in any layout's frame list, and no timecode messages were observed while idle. Fallback: an unknown uid streaming timecode-shaped text (a fourth :FF group; not any configured timer's uuid) is bound as LTC after two advancing samples, and that binding survives layout refreshes. pp-timers-mock gains --ltc-unlisted to exercise the path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
444f03938d
commit
d5cb6b6cd9
@@ -46,6 +46,9 @@ const NO_LTC = args.includes('--no-ltc');
|
||||
const DROP = new Set(args.flatMap((a) => (a.startsWith('--drop=') ? a.slice(7).split(',') : [])));
|
||||
const STAGE_PWD = (args.find((a) => a.startsWith('--stage-pwd=')) || '').slice(12);
|
||||
const NO_LTC_FIELD = args.includes('--no-ltc-field');
|
||||
// Like real ProPresenter 21: the layout list omits the timecode field, but
|
||||
// its updates still stream — exercises the module's heuristic binding.
|
||||
const LTC_UNLISTED = args.includes('--ltc-unlisted');
|
||||
const FPS = 30;
|
||||
|
||||
const startedAt = Date.now();
|
||||
@@ -164,7 +167,7 @@ const STAGE_LAYOUT = {
|
||||
nme: 'Timers',
|
||||
fme: [
|
||||
{ nme: 'Current Slide', typ: 1 },
|
||||
...(NO_LTC_FIELD ? [] : [{ nme: 'LTC', typ: 7, uid: 'LTC-FIELD' }]),
|
||||
...(NO_LTC_FIELD || LTC_UNLISTED ? [] : [{ nme: 'LTC', typ: 7, uid: 'LTC-FIELD' }]),
|
||||
{ nme: 'Sermon Countdown', typ: 7, uid: 'T1-SERMON' },
|
||||
],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user