Crafter.Graphics/implementations
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jorijn van der Graaf 3f646ec42b
fix(wayland): the first key repeat lands at the delay, not as a burst of the periods since the press
keyboard_key set lastFireTime to the press and TickKeyRepeats caught up on
every period since it, so the first tick past the compositor's delay fired
floor(delay / period) repeats at once: with rate 25 and delay 600 a held
Backspace deleted sixteen characters at the delay mark and a held letter
put fifteen copies in the field, from a hardware keyboard and from an
on-screen keyboard that sends Backspace as key events. A rate above 1000
made the period zero and the loop endless.

The first repeat now lands at the delay, as wl_keyboard.repeat_info
promises (one after `delay`, then `rate` a second): the first tick past
the delay sets lastFireTime to pressTime + delay - period. The period is
at least a millisecond, and the catch-up after a stalled frame is capped
(kKeyRepeatCatchUp, three) with the rest of the stall dropped, so a held
key is never a burst of edits. TickKeyRepeats takes the clock as a
parameter for the tests; the frame path's call is unchanged.

tests/KeyRepeat drives TickKeyRepeats with an injected clock on a
default-constructed Window: nothing before the delay, one at it, one per
period after, a capped catch-up, a key without text, a rate above 1000, a
released key, rate 0.
2026-11-01 00:53:56 +01:00
..
Crafter.Graphics-Clipboard.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-ComputeShader.cpp feat: windows on their own clock, deferred deletion for every handle owner, staged re-uploads, and RTPass push data 2026-10-20 20:20:29 +02:00
Crafter.Graphics-Device-Features.cpp feat(device): applications ask for the device features their shaders use 2026-10-31 06:40:02 +01:00
Crafter.Graphics-Device.cpp fix(wayland): the first key repeat lands at the delay, not as a burst of the periods since the press 2026-11-01 00:53:56 +01:00
Crafter.Graphics-Dom.cpp wasm improvements 2026-08-05 04:08:13 +02:00
Crafter.Graphics-Font.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-FontAtlas.cpp fix(font-atlas): give glyphs that find no room a cell when the next frame begins, evicting the least recently drawn 2026-10-31 19:43:58 +01:00
Crafter.Graphics-Gamepad.cpp feat: windows on their own clock, deferred deletion for every handle owner, staged re-uploads, and RTPass push data 2026-10-20 20:20:29 +02:00
Crafter.Graphics-GamepadWin32.c feat: windows on their own clock, deferred deletion for every handle owner, staged re-uploads, and RTPass push data 2026-10-20 20:20:29 +02:00
Crafter.Graphics-GamepadWin32.h feat: windows on their own clock, deferred deletion for every handle owner, staged re-uploads, and RTPass push data 2026-10-20 20:20:29 +02:00
Crafter.Graphics-Input.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-InputField.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-Mesh-WebGPU.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-Mesh.cpp feat: windows on their own clock, deferred deletion for every handle owner, staged re-uploads, and RTPass push data 2026-10-20 20:20:29 +02:00
Crafter.Graphics-PipelineRTWebGPU.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-RenderingElement3D-WebGPU.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-RenderingElement3D.cpp fix(rt): rebuild TLASes in place, after earlier traces, and queue their handles like a Mesh's 2026-10-31 02:32:48 +01:00
Crafter.Graphics-Router.cpp wasm improvements 2026-08-05 04:08:13 +02:00
Crafter.Graphics-ShaderBindingTableWebGPU.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-UI-Shared.cpp fix(font-atlas): give glyphs that find no room a cell when the next frame begins, evicting the least recently drawn 2026-10-31 19:43:58 +01:00
Crafter.Graphics-UI-WebGPU.cpp fix(font-atlas): give glyphs that find no room a cell when the next frame begins, evicting the least recently drawn 2026-10-31 19:43:58 +01:00
Crafter.Graphics-UI.cpp fix(font-atlas): give glyphs that find no room a cell when the next frame begins, evicting the least recently drawn 2026-10-31 19:43:58 +01:00
Crafter.Graphics-UIComponents.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-WebGPUComputeShader.cpp SPDX license update 2026-07-22 18:09:06 +02:00
Crafter.Graphics-Window.cpp fix(font-atlas): give glyphs that find no room a cell when the next frame begins, evicting the least recently drawn 2026-10-31 19:43:58 +01:00