Skip to content

Do not park a video that starts while a still still holds the renderer - #19

Merged
bjarneo merged 1 commit into
omacom:mainfrom
chessing234:fix/dont-park-during-handoff
Oct 30, 2026
Merged

bjarneo merged 1 commit into
omacom:mainfrom
chessing234:fix/dont-park-during-handoff

Conversation

@chessing234

Copy link
Copy Markdown
Contributor

A video set within about two seconds of a still was parked along with the renderer. That hold exists so the shell can take the still over. Parking dropped the video load, the ready timeout fired, and the still stayed up.

The park timer is cleared when the handoff starts, and a timer that is already due does not park while the handoff is in progress.

Fixes #18

The lock-policy test covers a due timer on a still (parks) and a video started inside the window (does not). I compiled and ran that test here. The rest of the suite needs Linux.

Made with Cursor

The two-second hold after a still is only so the shell can take the
surface over. A video set inside that window was parked with it, the
load never became ready, and the still stayed up.

Fixes omacom#18
@bjarneo
bjarneo merged commit 58e4b48 into omacom:main Oct 30, 2026
1 check passed
olafkfreund added a commit to olafkfreund/nixarchy that referenced this pull request Oct 31, 2026
…renderer start wait (#1153, #1437) and the handoff park fix (#1359) (#1535)

## What and why

The `update` workflow on main failed this morning (run 41171151925).
nix-update bumped owe 0.2.12 → 0.2.13, and our carried
`substituteInPlace` on `src/daemon/supervisor.c` no longer matched:

```
substituteStream() in derivation owe-0.2.13: ERROR: pattern while\ \(waited\ \<\ 1000\)\ \{ doesn't match anything in file 'src/daemon/supervisor.c'
```

The other failed builds in that log are at unchanged versions and were
stopped by this one. owe 0.2.13 is the only package that moved.

Both carries are upstream now, so this PR bumps owe and deletes
`postPatch`:

- **#1153 / #1437, renderer start wait.** Upstream (omacom/owe 642ce71,
d876718, 213b842) waits 7 s, then keeps a slow renderer and takes it
when its socket appears, up to 30 s (`RENDER_LATE_MS`, "Software GL in a
virtual machine needs about 11 seconds"). Our carry raised the 1 s wait
to 30 s. The SIGTERM grace it also stretched is now its own
`RENDER_STOP_MS`.
- **#1359, the handoff park.** omacom/owe#19 (266aa8b, fixes
omacom/owe#18) adds our exact line, `app->shell_stop_at_ms = 0;` after
`handoff_pending = true;`, and also skips the park while a handoff is
pending. Our own guard in `postPatch` would have refused the build next
for this reason.

`test/meson.build` changed only in the `transition` test's sources, so
the `mesonCheckFlags` allowlist stays as it is.

## How it was verified

- `nix build .#owe`: builds, the meson suite and the QML plugin's ctest
pass, and the install check reports 0.2.13.
- Not run locally: `checks.session` (its #1359 block sets a video right
after a still) and `checks.coexist` (#1437's slow software-GL start).
They are VM checks, so CI answers them. One behaviour change to watch is
that upstream's late start no longer blocks owed during the wait, the
way our 30 s loop did.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_0117TADC4XC7JSKKXfg2XVvy

Co-authored-by: x <x@x>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A video set within 2 s of returning to a still is parked mid-handoff and never shown (0.2.11)

2 participants