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-Animation.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Clipboard.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-ComputeShader.cppm
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-Decompress.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-DescriptorHeapVulkan.cppm
fix(window): size the swapchain for its present mode, and key frames in flight by frame instead of image
2026-10-31 18:14:18 +01:00
Crafter.Graphics-DescriptorHeapWebGPU.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Device.cppm
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.cppm
wasm improvements
2026-08-05 04:08:13 +02:00
Crafter.Graphics-DomEvents.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Font.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-FontAtlas.cppm
fix(ui): decode the font atlas's SDF in atlas pixels, so text edges ramp over one screen pixel
2026-10-31 20:23:40 +01:00
Crafter.Graphics-ForwardDeclarations.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Gamepad.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-GraphicsTypes.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Image2D.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-ImageVulkan.cppm
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.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-InputField.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Keys.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Mesh.cppm
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-PipelineRTVulkan.cppm
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.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-PlainComputeShader.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-RenderingElement3D.cppm
fix(window): size the swapchain for its present mode, and key frames in flight by frame instead of image
2026-10-31 18:14:18 +01:00
Crafter.Graphics-RenderPass.cppm
fix(window): size the swapchain for its present mode, and key frames in flight by frame instead of image
2026-10-31 18:14:18 +01:00
Crafter.Graphics-Router.cppm
wasm improvements
2026-08-05 04:08:13 +02:00
Crafter.Graphics-RT.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-RTPass.cppm
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-SamplerVulkan.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-ShaderBindingTableVulkan.cppm
feat(vulkan): run the compute/UI path without VK_EXT_descriptor_heap
2026-10-06 17:28:46 +02:00
Crafter.Graphics-ShaderBindingTableWebGPU.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-ShaderVulkan.cppm
feat(device): applications ask for the device features their shaders use
2026-10-31 06:40:02 +01:00
Crafter.Graphics-Types.cppm
feat(wayland): text input through zwp_text_input_v3
2026-10-18 01:57:09 +02:00
Crafter.Graphics-UI.cppm
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.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-VulkanBuffer.cppm
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-VulkanTransition.cppm
feat(vulkan): run the compute/UI path without VK_EXT_descriptor_heap
2026-10-06 17:28:46 +02:00
Crafter.Graphics-WebGPU.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-WebGPUBuffer.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-WebGPUComputeShader.cppm
SPDX license update
2026-07-22 18:09:06 +02:00
Crafter.Graphics-Window.cppm
fix(window): size the swapchain for its present mode, and key frames in flight by frame instead of image
2026-10-31 18:14:18 +01:00
Crafter.Graphics.cppm
SPDX license update
2026-07-22 18:09:06 +02:00