vectorcraft/crates
Oscar Sebastián Mellado Bustos 5db200d392 Linux: check the system clipboard for Paste off the UI thread
`has()` on an X11 clipboard owner that never answers can block for
seconds; the app called it every 0.25 s on the UI thread to decide
whether Paste is enabled, so a stuck owner froze the frame loop (the
window stopped drawing and could not be closed).

`clipboard_probe` owns a second clipboard handle on a worker thread,
publishes its verdict over a channel and wakes the UI only when it
changes; the frame reads the latest verdict without ever blocking.
Without a factory the check stays in line, throttled, exactly as before
(the web shows SVG text only; hosts that don't install one keep the old
path).

The factory is installed on Linux only for now (the environment the bug
reproduces in); other platforms keep the in-line check, so this cannot
change their behaviour.

Tests: a fake clipboard whose `has()` blocks on a gate, a probe factory
sharing a recorder, and a headless frame whose elapsed time is measured.
They assert the frame does not wait on the clipboard and that the check
runs on the probe thread, that the probe's verdict reaches `system_paste`
and the Paste menu, that dropping the app stops the probe, and that the
in-line check (no factory: the web, older hosts) still works.
2026-10-08 22:34:29 +07:00
..
brush M4.39: SVG symbols as <symbol>/<use>, hidden layers on Save, Dublin Core metadata 2026-10-05 09:03:52 +07:00
cad Fix #177: DXF Fit and Aligned text span their two points 2026-10-07 02:14:39 +07:00
color Fix #320: CMYK images stay CMYK from PDF import to PDF export 2026-10-08 06:04:07 +07:00
doc Type Object Selection by Path Only: every baseline, Type tool and Eyedropper (review of #475) 2026-10-08 18:59:47 +07:00
effects M8.14: Type and symbols in perspective are really projected and stay editable; attachments survive copies 2026-10-06 12:10:00 +07:00
engine Fix #504: Convert corner/smooth for a path selected as a whole with the anchor tools 2026-10-08 22:03:17 +07:00
eps Fix #474: Illustrator 8 EPS gradients open (executable strings, `load` by integer keys) 2026-10-08 18:24:05 +07:00
format Part of #451: guides dragged out of the rulers snap, artboard guides 2026-10-08 15:23:18 +07:00
geom Pen and anchors: Alt edits one handle, cut and convert selected anchors from the Control bar 2026-10-08 17:16:12 +07:00
mcp Fix #501: a Pen drag out of the first anchor always closes the path 2026-10-08 22:00:24 +07:00
metafile AI import: groups and nested groups survive 2026-10-08 17:06:57 +07:00
pathops Fix #439: Shape Builder erase mode deletes edges, shows what will go and follows Alt live 2026-10-08 13:37:35 +07:00
pdf EPS import: other apps' EPS open as vectors, a preview that stands in says why 2026-10-08 18:23:36 +07:00
plugins Fix #121: sandboxed WebAssembly plug-ins: object filters and live effects 2026-10-06 00:19:41 +07:00
render Fix #320: CMYK images stay CMYK from PDF import to PDF export 2026-10-08 06:04:07 +07:00
svg Fix #442: alike circular corners on rectangles that aren't square 2026-10-08 14:34:37 +07:00
testkit M4.62: PDF/.ai layers from optional content: named layers with visibility, print state and lock; art that is off as hidden layers 2026-10-05 13:05:12 +07:00
text Type Object Selection by Path Only: every baseline, Type tool and Eyedropper (review of #475) 2026-10-08 18:59:47 +07:00
tools Fix #501: a Pen drag out of the first anchor always closes the path 2026-10-08 22:00:24 +07:00
trace Robustness: VectorCraft never crashes — no panics in shipped code 2026-10-05 06:28:59 +07:00
ui-egui Linux: check the system clipboard for Paste off the UI thread 2026-10-08 22:34:29 +07:00