forked from 1b-agent/opencadstudio-upstream
The uncaptured-error handler from #404 was armed in `Pipeline::new`, which `MultiPipeline::ensure_len` runs again for every pane added — so the slot was re-registered on every new pane. Move it to `MultiPipeline::new`, which runs once per device; if iced ever rebuilds the device it builds a new `MultiPipeline` too, so the fresh device stays covered — where a `Once` guard would have left it on wgpu's panicking default. Throttle the message. The handler slot is per-device and single, so it also catches iced's own draw errors and is the only thing that can report them — it has to stay loud. But a validation error normally repeats on every frame, and an unthrottled print floods stderr at refresh rate and buries the first, most useful message. Log the 1st, 2nd, 4th, 8th … occurrence instead: the error is never hidden, the running count shows it is ongoing, and the output stays finite. Co-Authored-By: Claude Opus 4.8 <[email protected]>