listener.zig (839B)
1 const std = @import("std"); 2 const wl = @import("wayland").server.wl; 3 4 const Foo = struct { 5 bar: []const u8, 6 }; 7 8 pub fn main() anyerror!void { 9 var listen: wl.Listener(void) = undefined; 10 listen.setNotify(not); 11 12 var signal: wl.Signal(void) = undefined; 13 signal.init(); 14 15 signal.add(&listen); 16 17 signal.emit(); 18 signal.emit(); 19 20 var listen2: wl.Listener(*Foo) = undefined; 21 listen2.setNotify(not2); 22 23 var signal2: wl.Signal(*Foo) = undefined; 24 signal2.init(); 25 26 signal2.add(&listen2); 27 28 var foo = Foo{ .bar = "it's a trap!" }; 29 var foo2 = Foo{ .bar = "nevermind..." }; 30 31 signal2.emit(&foo); 32 signal2.emit(&foo2); 33 } 34 35 fn not(_: *wl.Listener(void)) void { 36 std.debug.print("notified\n", .{}); 37 } 38 39 fn not2(_: *wl.Listener(*Foo), foo: *Foo) void { 40 std.debug.print("{s}\n", .{foo.bar}); 41 }