aboutsummaryrefslogtreecommitdiff
path: root/src/event-set.zig
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2025-08-22 20:12:56 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2025-08-22 20:12:56 +0200
commit956ecb061b1862a4b632c8d5d6b6fa4318e1f640 (patch)
treef00adc9bfced275f280239b25a2b2ae15f57765b /src/event-set.zig
parent33e1de2710fe44512440e0e6055578d67dab330c (diff)
object refactor and add wl output
Now the Object is held by the registry instead of the struct its referencing and the struct only has a `handle` which is a usize.
Diffstat (limited to 'src/event-set.zig')
-rw-r--r--src/event-set.zig8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/event-set.zig b/src/event-set.zig
index 5721a4e..27c28bf 100644
--- a/src/event-set.zig
+++ b/src/event-set.zig
@@ -4,7 +4,6 @@ const wayland = @import("root.zig");
pub fn EventSet(T: type, events: anytype) type {
return struct {
pub fn on_event(ptr: *anyopaque, ctx: *wayland.Context, opcode: u16, args: []const u8) void {
- std.debug.print("event {} {}\n", .{T, opcode});
var offset: usize = 0;
inline for (events, 0..) |event, index| {
if (@TypeOf(event) != @TypeOf(null) and index == opcode) {
@@ -31,7 +30,7 @@ pub fn EventSet(T: type, events: anytype) type {
},
*wayland.Object => {
const result = std.mem.readPackedIntNative(u32, args, offset * 8);
- fn_args[arg_index] = ctx.display.registry.objects.items[result] orelse unreachable;
+ fn_args[arg_index] = ctx.display.registry.get(result) orelse unreachable;
offset += @sizeOf(u32);
},
else => |t| switch (@typeInfo(t)) {
@@ -67,7 +66,7 @@ test {
a: u32 = 0,
b: u32 = 0,
- pub fn something(self: *@This(), a: u32, b: u32) void {
+ pub fn something(self: *@This(), _: *wayland.Context, a: u32, b: u32) void {
self.a = a;
self.b = b;
}
@@ -75,8 +74,9 @@ test {
var dummy = Dummy{};
const Events = EventSet(Dummy, .{null, Dummy.something });
+ var ctx: wayland.Context = undefined;
- Events.on_event(&dummy, 1, &(std.mem.toBytes(@as(u32, 1)) ++ std.mem.toBytes(@as(u32, 2))));
+ Events.on_event(&dummy, &ctx, 1, &(std.mem.toBytes(@as(u32, 1)) ++ std.mem.toBytes(@as(u32, 2))));
try std.testing.expectEqual(dummy.a, 1);
try std.testing.expectEqual(dummy.b, 2);