git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commita14c865999a40b26304c6d1c9515e8b20e2fe809
parent006c90b941
authorIsaac Freund <[email protected]>
date2024-12-29 16:26
Seat: stop trying to ensure pointer frames are sent synchronously

This idea was misguided, there is no need to do this.

 river/Seat.zig | 55 ++++++++++++++++++-------------------------------------
 1 file changed, 18 insertions(+), 37 deletions(-)

diff --git a/river/Seat.zig b/river/Seat.zig
index d43dc79..1bab0d3 100644
--- a/river/Seat.zig
+++ b/river/Seat.zig
@@ -241,48 +241,29 @@ pub fn processEvents(seat: *Seat) void {
     // Only process events while there is no pending state to be sent to the window manager.
     // The window manager might decide to change focus or redefine keyboard/pointer bindings
     // in response to the pending update.
-    var expect_frame: bool = false;
-    while (!server.wm.pending.dirty or expect_frame) {
+    while (!server.wm.pending.dirty) {
         const event = seat.event_queue.readItem() orelse break;
-        seat.processEvent(event);
 
-        // Don't split up pointer events grouped by a frame event
+        const pg = server.input_manager.pointer_gestures;
         switch (event) {
-            .pointer_motion_relative,
-            .pointer_motion_absolute,
-            .pointer_button,
-            .pointer_axis,
-            => {
-                expect_frame = true;
-            },
-            .pointer_frame => expect_frame = false,
-            else => assert(!expect_frame),
+            .keyboard_key => |ev| ev.keyboard.processKey(&ev.key),
+            .keyboard_modifiers => |ev| ev.keyboard.processModifiers(&ev.modifiers),
+
+            .pointer_motion_relative => |ev| seat.cursor.processMotionRelative(&ev),
+            .pointer_motion_absolute => |ev| seat.cursor.processMotionAbsolute(&ev),
+            .pointer_button => |ev| seat.cursor.processButton(&ev),
+            .pointer_axis => |ev| seat.cursor.processAxis(&ev),
+            .pointer_frame => seat.wlr_seat.pointerNotifyFrame(),
+
+            .pointer_swipe_begin => |ev| pg.sendSwipeBegin(seat.wlr_seat, ev.time_msec, ev.fingers),
+            .pointer_swipe_update => |ev| pg.sendSwipeUpdate(seat.wlr_seat, ev.time_msec, ev.dx, ev.dy),
+            .pointer_swipe_end => |ev| pg.sendSwipeEnd(seat.wlr_seat, ev.time_msec, ev.cancelled),
+
+            .pointer_pinch_begin => |ev| pg.sendPinchBegin(seat.wlr_seat, ev.time_msec, ev.fingers),
+            .pointer_pinch_update => |ev| pg.sendPinchUpdate(seat.wlr_seat, ev.time_msec, ev.dx, ev.dy, ev.scale, ev.rotation),
+            .pointer_pinch_end => |ev| pg.sendPinchEnd(seat.wlr_seat, ev.time_msec, ev.cancelled),
         }
     }
-
-    assert(!expect_frame);
-}
-
-fn processEvent(seat: *Seat, event: Event) void {
-    const pg = server.input_manager.pointer_gestures;
-    switch (event) {
-        .keyboard_key => |ev| ev.keyboard.processKey(&ev.key),
-        .keyboard_modifiers => |ev| ev.keyboard.processModifiers(&ev.modifiers),
-
-        .pointer_motion_relative => |ev| seat.cursor.processMotionRelative(&ev),
-        .pointer_motion_absolute => |ev| seat.cursor.processMotionAbsolute(&ev),
-        .pointer_button => |ev| seat.cursor.processButton(&ev),
-        .pointer_axis => |ev| seat.cursor.processAxis(&ev),
-        .pointer_frame => seat.wlr_seat.pointerNotifyFrame(),
-
-        .pointer_swipe_begin => |ev| pg.sendSwipeBegin(seat.wlr_seat, ev.time_msec, ev.fingers),
-        .pointer_swipe_update => |ev| pg.sendSwipeUpdate(seat.wlr_seat, ev.time_msec, ev.dx, ev.dy),
-        .pointer_swipe_end => |ev| pg.sendSwipeEnd(seat.wlr_seat, ev.time_msec, ev.cancelled),
-
-        .pointer_pinch_begin => |ev| pg.sendPinchBegin(seat.wlr_seat, ev.time_msec, ev.fingers),
-        .pointer_pinch_update => |ev| pg.sendPinchUpdate(seat.wlr_seat, ev.time_msec, ev.dx, ev.dy, ev.scale, ev.rotation),
-        .pointer_pinch_end => |ev| pg.sendPinchEnd(seat.wlr_seat, ev.time_msec, ev.cancelled),
-    }
 }
 
 pub fn sendDirty(seat: *Seat) void {