From 332ecf21594c2c9c3ff288656223d32390500278 Mon Sep 17 00:00:00 2001 From: "Jeffrey C. Ollie" Date: Tue, 14 Apr 2026 20:53:41 -0500 Subject: [PATCH] get main example working, and image partially working --- examples/image.zig | 35 ++++++++++++++++++++--------------- examples/main.zig | 24 ++++++++---------------- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/examples/image.zig b/examples/image.zig index c14bbdb..4f5b93a 100644 --- a/examples/image.zig +++ b/examples/image.zig @@ -8,44 +8,49 @@ const Event = union(enum) { winsize: vaxis.Winsize, }; -pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; - defer { - const deinit_status = gpa.deinit(); - if (deinit_status == .leak) { - log.err("memory leak", .{}); - } - } - const alloc = gpa.allocator(); +pub fn main(init: std.process.Init) !void { + std.log.warn("YYYYY", .{}); + const io = init.io; + const alloc = init.gpa; var buffer: [1024]u8 = undefined; - var tty = try vaxis.Tty.init(&buffer); + std.log.warn("ZZZZ", .{}); + var tty = try vaxis.Tty.init(io, &buffer); defer tty.deinit(); + std.log.warn("1111", .{}); - var vx = try vaxis.init(alloc, .{}); + var vx = try vaxis.init(io, alloc, init.environ_map, .{}); defer vx.deinit(alloc, tty.writer()); + std.log.warn("2222", .{}); - var loop: vaxis.Loop(Event) = .{ .tty = &tty, .vaxis = &vx }; - try loop.init(); - + var loop: vaxis.Loop(Event) = .init(io, &tty, &vx); + std.log.warn("AAAA", .{}); try loop.start(); defer loop.stop(); + std.log.warn("BBBB", .{}); try vx.enterAltScreen(tty.writer()); + std.log.warn("CCCC", .{}); try vx.queryTerminal(tty.writer(), 1 * std.time.ns_per_s); + std.log.warn("DDDD", .{}); var read_buffer: [1024 * 1024]u8 = undefined; // 1MB buffer - var img1 = try vaxis.zigimg.Image.fromFilePath(alloc, "examples/zig.png", &read_buffer); + var img1 = try vaxis.zigimg.Image.fromFilePath(alloc, io, "examples/zig.png", &read_buffer); + std.log.warn("EEEE", .{}); defer img1.deinit(alloc); + std.log.warn("FFFF", .{}); const imgs = [_]vaxis.Image{ try vx.transmitImage(alloc, tty.writer(), &img1, .rgba), // var img1 = try vaxis.zigimg.Image.fromFilePath(alloc, "examples/zig.png"); // try vx.loadImage(alloc, tty.writer(), .{ .path = "examples/zig.png" }), try vx.loadImage(alloc, tty.writer(), .{ .path = "examples/vaxis.png" }), }; + std.log.warn("GGGG", .{}); defer vx.freeImage(tty.writer(), imgs[0].id); + std.log.warn("HHHH", .{}); defer vx.freeImage(tty.writer(), imgs[1].id); + std.log.warn("JJJJ", .{}); var n: usize = 0; diff --git a/examples/main.zig b/examples/main.zig index 2a4b96b..abb81dd 100644 --- a/examples/main.zig +++ b/examples/main.zig @@ -3,26 +3,18 @@ const vaxis = @import("vaxis"); const Cell = vaxis.Cell; const log = std.log.scoped(.main); -pub fn main() !void { - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; - defer { - const deinit_status = gpa.deinit(); - //fail test; can't try in defer as defer is executed after we return - if (deinit_status == .leak) { - log.err("memory leak", .{}); - } - } - const alloc = gpa.allocator(); +pub fn main(init: std.process.Init) !void { + const io = init.io; + const alloc = init.gpa; var buffer: [1024]u8 = undefined; - var tty = try vaxis.Tty.init(&buffer); + var tty = try vaxis.Tty.init(io, &buffer); defer tty.deinit(); - var vx = try vaxis.init(alloc, .{}); + var vx = try vaxis.init(io, alloc, init.environ_map, .{}); defer vx.deinit(alloc, tty.writer()); - var loop: vaxis.Loop(Event) = .{ .tty = &tty, .vaxis = &vx }; - try loop.init(); + var loop: vaxis.Loop(Event) = .init(io, &tty, &vx); try loop.start(); defer loop.stop(); @@ -41,8 +33,8 @@ pub fn main() !void { // queue which can serve as the primary event queue for an application while (true) { // nextEvent blocks until an event is in the queue - const event = loop.nextEvent(); - log.debug("event: {}", .{event}); + const event = try loop.nextEvent(); + // log.debug("event: {}", .{event}); // exhaustive switching ftw. Vaxis will send events if your Event // enum has the fields for those events (ie "key_press", "winsize") switch (event) { -- 2.51.2