stevee

My wayland statusbar
git clone git://gtms.dev/stevee
Log | Files | Refs | README | LICENSE

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 }