Skip to content

PipeWire modifier parse fix, and a per-publication node execution boundary - #936

Merged
jcelerier merged 2 commits into
masterfrom
3rdparty/libremidi-modifier-parse
Sep 12, 2026
Merged

jcelerier merged 2 commits into
masterfrom
3rdparty/libremidi-modifier-parse

Conversation

@jcelerier

@jcelerier jcelerier commented Sep 11, 2026

Copy link
Copy Markdown
Member

Two changes needed by ossia/score#2270.

3rdparty: update libremidi. Picks up celtera/libremidi#255. extract_modifier_choice read a DMA-BUF modifier list at the wrong offset, dropping the first two entries and reading two past the end of the pod. A consumer then fixated on a modifier the producer never offered, and every Vulkan import of the shared buffer failed with VK_ERROR_OUT_OF_DEVICE_MEMORY. score's PipeWire DMA-BUF video input rendered black for this reason.

dataflow: expose a per-publication node execution boundary. A new graph_node::begin_execution(), called from both exec_node overloads right after init_node and before the token-slice loop. A node gets one call per graph execution, whatever number of slices that execution carries.

The gap it fills: prepare() is setup and run() is per-slice, so a node that accumulates across the slices of one execution had no way to know where an execution starts. It cannot be inferred from inside a slice, since a slice cannot tell whether it is the first, and transport time does not help when slices are zero-length, equal, or reversed. score's avendish binding uses it to reset the MIDI batch a processor emits across the slices of a tick.

Both exec_node overloads are covered; run_scaled is a declaration with no definition or caller, and nothing else drives a node's run().

Merge after the libremidi PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_019QWYTEhFJonuUNTEmBfv7Q

@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 03:43 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 03:43 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 03:43 — with GitHub Actions Active
@jcelerier
jcelerier force-pushed the 3rdparty/libremidi-modifier-parse branch from db2347c to 57d1287 Compare September 11, 2026 04:00
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:00 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:00 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:00 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:01 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:01 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:01 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:01 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:01 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:01 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 11, 2026 04:01 — with GitHub Actions Active
jcelerier and others added 2 commits September 12, 2026 09:52
Picks up celtera/libremidi#255. extract_modifier_choice read a DMA-BUF
modifier list at the wrong offset, so a consumer fixated on a modifier the
producer never offered and every Vulkan import failed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QWYTEhFJonuUNTEmBfv7Q
@jcelerier
jcelerier force-pushed the 3rdparty/libremidi-modifier-parse branch from 0759f2c to 8535afc Compare September 12, 2026 13:52
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:52 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:53 — with GitHub Actions Active
@jcelerier
jcelerier deployed to Apple Certificate September 12, 2026 13:53 — with GitHub Actions Active
@jcelerier
jcelerier merged commit aabe67e into master Sep 12, 2026
36 of 42 checks passed
@jcelerier
jcelerier deleted the 3rdparty/libremidi-modifier-parse branch September 12, 2026 18:29
jcelerier added a commit to ossia/score that referenced this pull request Sep 12, 2026
Picks up ossia/libossia#936, which pins celtera/libremidi#255. Without it
the DMA-BUF modifier reaching DRMPrimeDecoder is garbage and every Vulkan
import fails, so the video input renders black.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QWYTEhFJonuUNTEmBfv7Q
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.

1 participant