summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
13 dayswayland: destroy tablet pad group proxiesBerke Güzel
Pad groups arrive as new objects with the group event. yasl ignored them, so the proxies were never destroyed and leaked on every pad. Destroy each group when it arrives. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
13 daysfeat: add type-safe native platform headers and portable drag supportBerke Güzel
- Add include/yasl/native/{wayland,cocoa,x11}.h with type-safe handle accessors. - Unify drag-and-drop and window carry support across Wayland, X11, and Cocoa. - Preserve full ABI compatibility for capability flags. - Install native headers conditionally based on enabled backend. - Include missing tablet example and backend test suites.
13 dayscursor hidden and tablet supportBerke Güzel
13 daysrefactor: simplify public API and isolate native extensionsBerke Güzel
Separate loop/timer and native interoperability APIs from the portable surface header. Unify dispatch, geometry queries, and timer callbacks; keep framebuffer bookkeeping and frame clocks private, and hide implementation symbols. Update backends, documentation, examples, and API/integration coverage. Verify exports, strict C/C++ installed consumers, and normal plus ASan/UBSan suites.
13 daysfeat: add SDL3-style surface, display, and loop timer API for X11, Wayland, ↵Berke Güzel
and Cocoa
13 daysmissing impls and hardeningBerke Güzel
13 daysMerge branch 'backend-selection' into mainBerke Güzel
- Implement runtime backend selection (Wayland, X11, Cocoa) - Add native X11 backend with clipboard, keyboard, mouse, and placement - Integrate multi-backend integration tests running under Weston and Xwayland - Retain zero-hole struct packing, branchless ALU/LUT primitives, and paced event loop
13 daysfeat: backend selection (Wayland, X11, Cocoa)Berke Güzel
13 daysfeat: cross-platform pen pressure, tilt, and stylus handlingBerke Güzel
- Hook up Cocoa tablet, stylus, and Force Touch pressure/tilt to push_pointer - Ensure Wayland tablet tool pressure resets cleanly on tool up - Visualize pressure-sensitive brush scaling and telemetry in simple_window
13 daysopt: shrink input event to 48B, pack mouse event to 32B, and shave 2KB off ↵Berke Güzel
yasl_surface - Compact yasl_mouse_event from 36B to 32B (half a cacheline, 0 holes) - Compact yasl_input_event from 56B to 48B (0 holes) - Reduce yasl_surface by 2,048 bytes (shaving 32 full cachelines per surface) - Optimize UTF-8 sanitize with vectorized validation fast-path - Fast-path MIME prefix match in clipboard transfers
13 daysopt: compile-time locked LUTs and branchless SIMD/ALU primitivesBerke Güzel
- Replace buffer allocation branching loop with compile-time locked 24-byte LUT indexed by (cur & 3) - Use hardware lrint rounding and array-indexed pointer offsets for scroll axes - Replace press queue button/kind conditionals with branchless bitmasking and 1:1 identity casting - Make display_has_immediate_work evaluate state flags with bitwise ALU instead of short-circuit branches
13 dayscore: optimize struct layouts, eliminate branches, and fix event loop dispatchBerke Güzel
- Fix Wayland event loop lockout by properly decoupling read arming and adding poll-backed dispatching - Support standalone display lifecycle without requiring caller to manage a loop - Eliminate alignment holes across yasl_surface, yasl_display, seat, touch_point, and conn_drag using pahole - Replace branching state/button decoders with compile-time locked LUTs and branchless bitwise operations - Accelerate UTF-8 validation with 64-bit word scanning for ASCII runs
13 daysinitial: Yet Another Surface Library (YASL) 0.1.0Berke Güzel
A minimal, modern desktop window surface library in C. Supports Wayland on Linux and Cocoa/Metal on macOS with presentation timing, fractional scaling, IME, and CSD.