this repo has no description
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

get vaxis example working

authored by

Jeffrey C. Ollie and committed by
Tim Culverhouse
42d076e3 afd3ebb2

+11 -22
+9 -20
examples/vaxis.zig
··· 9 9 10 10 pub const panic = vaxis.panic_handler; 11 11 12 - pub fn main() !void { 13 - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 14 - defer { 15 - const deinit_status = gpa.deinit(); 16 - //fail test; can't try in defer as defer is executed after we return 17 - if (deinit_status == .leak) { 18 - std.log.err("memory leak", .{}); 19 - } 20 - } 21 - const alloc = gpa.allocator(); 12 + pub fn main(init: std.process.Init) !void { 13 + const io = init.io; 14 + const alloc = init.gpa; 22 15 23 16 var buffer: [1024]u8 = undefined; 24 - var tty = try vaxis.Tty.init(&buffer); 17 + var tty: vaxis.Tty = try .init(io, &buffer); 25 18 defer tty.deinit(); 26 19 27 - var vx = try vaxis.init(alloc, .{}); 20 + var vx = try vaxis.init(io, alloc, init.environ_map, .{}); 28 21 defer vx.deinit(alloc, tty.writer()); 29 22 30 - var loop: vaxis.Loop(Event) = .{ .tty = &tty, .vaxis = &vx }; 31 - try loop.init(); 23 + var loop: vaxis.Loop(Event) = .init(io, &tty, &vx); 32 24 33 25 try loop.start(); 34 26 defer loop.stop(); ··· 49 41 50 42 // block until we get a resize 51 43 while (true) { 52 - const event = loop.nextEvent(); 44 + const event = try loop.nextEvent(); 53 45 switch (event) { 54 46 .key_press => |key| if (key.matches('c', .{ .ctrl = true })) return, 55 47 .winsize => |ws| { ··· 60 52 } 61 53 62 54 while (true) { 63 - while (loop.tryEvent()) |event| { 55 + while (try loop.tryEvent()) |event| { 64 56 switch (event) { 65 57 .key_press => |key| if (key.matches('c', .{ .ctrl = true })) return, 66 58 .winsize => |ws| try vx.resize(alloc, tty.writer(), ws), ··· 80 72 }; 81 73 const center = vaxis.widgets.alignment.center(win, 28, 4); 82 74 _ = center.printSegment(segment, .{ .wrap = .grapheme }); 83 - // var bw = tty.bufferedWriter(); 84 - // try vx.render(bw.writer().any()); 85 - // try bw.flush(); 86 75 try vx.render(tty.writer()); 87 - std.Thread.sleep(16 * std.time.ns_per_ms); 76 + try io.sleep(.fromMilliseconds(16), .real); 88 77 switch (dir) { 89 78 .up => { 90 79 pct += 1;
+2 -2
src/Loop.zig
··· 86 86 } 87 87 88 88 /// returns an event if one is available, otherwise null. Non-blocking. 89 - pub fn tryEvent(self: *Self) ?T { 90 - return self.queue.tryPop(); 89 + pub fn tryEvent(self: *Self) !?T { 90 + return try self.queue.tryPop(); 91 91 } 92 92 93 93 /// posts an event into the event queue. Will block if there is not