this repo has no description
13
fork

Configure Feed

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

pass buffer to vxfw.App.init rather than allocating it internally

authored by

Jeffrey C. Ollie and committed by
Tim Culverhouse
93ef9797 29d38ae5

+57 -71
+6 -7
README.md
··· 214 214 } 215 215 }; 216 216 217 - pub fn main() !void { 218 - var gpa = std.heap.GeneralPurposeAllocator(.{}){}; 219 - defer _ = gpa.deinit(); 217 + pub fn main(init: std.process.Init) !void { 218 + const io = init.io; 219 + const alloc = init.gpa; 220 220 221 - const allocator = gpa.allocator(); 222 - 223 - var app = try vxfw.App.init(allocator); 221 + var buffer: [1024]u8 = undefined; 222 + var app: vxfw.App = try .init(io, alloc, init.environ_map, &buffer); 224 223 defer app.deinit(); 225 224 226 225 // We heap allocate our model because we will require a stable pointer to it in our Button 227 226 // widget 228 - const model = try allocator.create(Model); 227 + const model = try alloc.create(Model); 229 228 defer allocator.destroy(model); 230 229 231 230 // Set the initial state of our button
+2
build.zig
··· 71 71 .root_module = examples.get(example_option) orelse unreachable, 72 72 }); 73 73 74 + b.getInstallStep().dependOn(&example.step); 75 + 74 76 const example_run = b.addRunArtifact(example); 75 77 example_step.dependOn(&example_run.step); 76 78
+2 -2
examples/counter.zig
··· 115 115 const io = init.io; 116 116 const allocator = init.gpa; 117 117 118 - var app: vxfw.App = undefined; 119 - try app.init(io, allocator, init.environ_map); 118 + var buffer: [1024]u8 = undefined; 119 + var app: vxfw.App = try .init(io, allocator, init.environ_map, &buffer); 120 120 defer app.deinit(); 121 121 122 122 // We heap allocate our model because we will require a stable pointer to it in our Button
+5 -5
examples/fuzzy.zig
··· 204 204 const io = init.io; 205 205 const alloc = init.gpa; 206 206 207 - var app: vxfw.App = undefined; 208 - try app.init(io, alloc, init.environ_map); 209 - errdefer app.deinit(); 207 + var buffer: [1024]u8 = undefined; 208 + var app: vxfw.App = try .init(io, alloc, init.environ_map, &buffer); 209 + defer app.deinit(); 210 210 211 211 const model = try Model.init(alloc); 212 212 defer model.deinit(alloc); ··· 229 229 230 230 if (model.result.len > 0) { 231 231 var stdout_file: std.Io.File = .stdout(); 232 - var buffer: [1024]u8 = undefined; 233 - var stdout_writer = stdout_file.writer(io, &buffer); 232 + var stdout_buffer: [1024]u8 = undefined; 233 + var stdout_writer = stdout_file.writer(io, &stdout_buffer); 234 234 const stdout = &stdout_writer.interface; 235 235 try stdout.writeAll(model.result); 236 236 try stdout.writeByte('\n');
-13
examples/image.zig
··· 9 9 }; 10 10 11 11 pub fn main(init: std.process.Init) !void { 12 - std.log.warn("YYYYY", .{}); 13 12 const io = init.io; 14 13 const alloc = init.gpa; 15 14 16 15 var buffer: [1024]u8 = undefined; 17 - std.log.warn("ZZZZ", .{}); 18 16 var tty = try vaxis.Tty.init(io, &buffer); 19 17 defer tty.deinit(); 20 - std.log.warn("1111", .{}); 21 18 22 19 var vx = try vaxis.init(io, alloc, init.environ_map, .{}); 23 20 defer vx.deinit(alloc, tty.writer()); 24 - std.log.warn("2222", .{}); 25 21 26 22 var loop: vaxis.Loop(Event) = .init(io, &tty, &vx); 27 - std.log.warn("AAAA", .{}); 28 23 try loop.start(); 29 24 defer loop.stop(); 30 25 31 - std.log.warn("BBBB", .{}); 32 26 try vx.enterAltScreen(tty.writer()); 33 - std.log.warn("CCCC", .{}); 34 27 try vx.queryTerminal(tty.writer(), .fromSeconds(1)); 35 28 36 - std.log.warn("DDDD", .{}); 37 29 var read_buffer: [1024 * 1024]u8 = undefined; // 1MB buffer 38 30 var img1 = try vaxis.zigimg.Image.fromFilePath(alloc, io, "examples/zig.png", &read_buffer); 39 - std.log.warn("EEEE", .{}); 40 31 defer img1.deinit(alloc); 41 32 42 - std.log.warn("FFFF", .{}); 43 33 const imgs = [_]vaxis.Image{ 44 34 try vx.transmitImage(alloc, tty.writer(), &img1, .rgba), 45 35 // var img1 = try vaxis.zigimg.Image.fromFilePath(alloc, "examples/zig.png"); 46 36 // try vx.loadImage(alloc, tty.writer(), .{ .path = "examples/zig.png" }), 47 37 try vx.loadImage(alloc, tty.writer(), .{ .path = "examples/vaxis.png" }), 48 38 }; 49 - std.log.warn("GGGG", .{}); 50 39 defer vx.freeImage(tty.writer(), imgs[0].id); 51 - std.log.warn("HHHH", .{}); 52 40 defer vx.freeImage(tty.writer(), imgs[1].id); 53 - std.log.warn("JJJJ", .{}); 54 41 55 42 var n: usize = 0; 56 43
+15 -15
examples/list_view.zig
··· 54 54 55 55 pub fn main(init: std.process.Init) !void { 56 56 const io = init.io; 57 - const allocator = init.gpa; 57 + const alloc = init.gpa; 58 58 59 - var app: vxfw.App = undefined; 60 - try app.init(io, allocator, init.environ_map); 59 + var buffer: [1024]u8 = undefined; 60 + var app: vxfw.App = try .init(io, alloc, init.environ_map, &buffer); 61 61 defer app.deinit(); 62 62 63 - const model = try allocator.create(Model); 64 - defer allocator.destroy(model); 63 + const model = try alloc.create(Model); 64 + defer alloc.destroy(model); 65 65 66 66 const n = 80; 67 - var texts: std.ArrayList(Widget) = try .initCapacity(allocator, n); 68 - var allocs: std.ArrayList(*Text) = try .initCapacity(allocator, n); 67 + var texts: std.ArrayList(Widget) = try .initCapacity(alloc, n); 68 + var allocs: std.ArrayList(*Text) = try .initCapacity(alloc, n); 69 69 defer { 70 70 for (allocs.items) |tw| { 71 - allocator.free(tw.text); 72 - allocator.destroy(tw); 71 + alloc.free(tw.text); 72 + alloc.destroy(tw); 73 73 } 74 - allocs.deinit(allocator); 75 - texts.deinit(allocator); 74 + allocs.deinit(alloc); 75 + texts.deinit(alloc); 76 76 } 77 77 78 78 for (0..n) |i| { 79 - const t = std.fmt.allocPrint(allocator, "List Item {d} of {d}", .{ i, n }) catch "placeholder"; 80 - const tw = try allocator.create(Text); 79 + const t = std.fmt.allocPrint(alloc, "List Item {d} of {d}", .{ i, n }) catch "placeholder"; 80 + const tw = try alloc.create(Text); 81 81 tw.* = .{ .text = t }; 82 - _ = try allocs.append(allocator, tw); 83 - _ = try texts.append(allocator, tw.widget()); 82 + _ = try allocs.append(alloc, tw); 83 + _ = try texts.append(alloc, tw.widget()); 84 84 } 85 85 86 86 model.* = .{
+19 -19
examples/scroll.zig
··· 153 153 154 154 pub fn main(init: std.process.Init) !void { 155 155 const io = init.io; 156 - const allocator = init.gpa; 156 + const alloc = init.gpa; 157 157 158 - var app: vxfw.App = undefined; 159 - try app.init(io, allocator, init.environ_map); 158 + var buffer: [1024]u8 = undefined; 159 + var app: vxfw.App = try .init(io, alloc, init.environ_map, &buffer); 160 160 defer app.deinit(); 161 161 162 - var arena: std.heap.ArenaAllocator = .init(allocator); 162 + var arena: std.heap.ArenaAllocator = .init(alloc); 163 163 defer arena.deinit(); 164 164 165 - const model = try allocator.create(Model); 166 - defer allocator.destroy(model); 165 + const model = try alloc.create(Model); 166 + defer alloc.destroy(model); 167 167 model.* = .{ 168 168 .scroll_bars = .{ 169 169 .scroll_view = .{ ··· 183 183 }, 184 184 .rows = .empty, 185 185 }; 186 - defer model.rows.deinit(allocator); 186 + defer model.rows.deinit(alloc); 187 187 188 188 var lipsum: std.ArrayList([]const u8) = .empty; 189 - defer lipsum.deinit(allocator); 189 + defer lipsum.deinit(alloc); 190 190 191 - try lipsum.append(allocator, " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sit amet nunc porta, commodo tellus eu, blandit lectus. Aliquam dignissim rhoncus mi eu ultrices. Suspendisse lectus massa, bibendum sed lorem sit amet, egestas aliquam ante. Mauris venenatis nibh neque. Nulla a mi eget purus porttitor malesuada. Sed ac porta felis. Morbi ultricies urna nisi, et maximus elit convallis a. Morbi ut felis nec orci euismod congue efficitur egestas ex. Quisque eu feugiat magna. Pellentesque porttitor tortor ut iaculis dictum. Nulla erat neque, sollicitudin vitae enim nec, pharetra blandit tortor. Sed orci ante, condimentum vitae sodales in, sodales ut nulla. Suspendisse quam felis, aliquet ut neque a, lacinia sagittis turpis. Vivamus nec dui purus. Proin tempor nisl et porttitor consequat."); 192 - try lipsum.append(allocator, " Vivamus elit massa, commodo in laoreet nec, scelerisque ac orci. Donec nec ante sit amet nisi ullamcorper dictum quis non enim. Proin ante libero, consequat sit amet semper a, vulputate non odio. Mauris ut suscipit lacus. Mauris nec dolor id ex mollis tempor at quis ligula. Integer varius commodo ipsum id gravida. Sed ut lobortis est, id egestas nunc. In fringilla ullamcorper porttitor. Donec quis dignissim arcu, vitae sagittis tortor. Sed tempor porttitor arcu, sit amet elementum est ornare id. Morbi rhoncus, ipsum eget tincidunt volutpat, mauris enim vestibulum nibh, mollis iaculis ante enim quis enim. Donec pharetra odio vel ex fringilla, ut laoreet ipsum commodo. Praesent tempus, leo a pellentesque sodales, erat ipsum pretium nulla, id faucibus sem turpis at nibh. Aenean ut dui luctus, vehicula felis vel, aliquam nulla."); 193 - try lipsum.append(allocator, " Cras interdum mattis elit non varius. In condimentum velit a tellus sollicitudin interdum. Etiam pulvinar semper ex, eget congue ante tristique ut. Phasellus commodo magna magna, at fermentum tortor porttitor ac. Fusce a efficitur diam, a congue ante. Mauris maximus ultrices leo, non viverra ex hendrerit eu. Donec laoreet turpis nulla, eget imperdiet tortor mollis aliquam. Donec a est eget ante consequat rhoncus."); 194 - try lipsum.append(allocator, " Morbi facilisis libero nec viverra imperdiet. Ut dictum faucibus bibendum. Vestibulum ut nisl eu magna sollicitudin elementum vel eu ante. Phasellus euismod ligula massa, vel rutrum elit hendrerit ut. Vivamus id luctus lectus, at ullamcorper leo. Pellentesque in risus finibus, viverra ligula sed, porta nisl. Aliquam pretium accumsan placerat. Etiam a elit posuere, varius erat sed, aliquet quam. Morbi finibus gravida erat, non imperdiet dolor sollicitudin dictum. Aenean eget ullamcorper lacus, et hendrerit lorem. Quisque sed varius mauris."); 195 - try lipsum.append(allocator, " Nullam vitae euismod mauris, eu gravida dolor. Nunc vel urna laoreet justo faucibus tempus. Vestibulum tincidunt sagittis metus ac dignissim. Curabitur eleifend dolor consequat malesuada posuere. In hac habitasse platea dictumst. Fusce eget ipsum tincidunt, placerat orci ut, malesuada ante. Vivamus ultrices purus vel orci posuere, sed posuere eros porta. Vestibulum a tellus et tortor scelerisque varius. Pellentesque vel leo sed est semper bibendum. Mauris tellus ante, cursus et nunc vitae, dictum pellentesque ex. In tristique purus felis, non efficitur ante mollis id. Nulla quam nisi, suscipit sit amet mattis vel, placerat sit amet lectus. Vestibulum cursus auctor quam, at convallis felis euismod non. Sed nec magna nisi. Morbi scelerisque accumsan nunc, sed sagittis sem varius sit amet. Maecenas arcu dui, euismod et sem quis, condimentum blandit tellus."); 196 - try lipsum.append(allocator, " Nullam auctor lobortis libero non viverra. Mauris a imperdiet eros, a luctus est. Integer pellentesque eros et metus rhoncus egestas. Suspendisse eu risus mauris. Mauris posuere nulla in justo pharetra molestie. Maecenas sagittis at nunc et finibus. Vestibulum quis leo ac mauris malesuada vestibulum vitae eu enim. Ut et maximus elit. Pellentesque lorem felis, tristique vitae posuere vitae, auctor tempus magna. Fusce cursus purus sit amet risus pulvinar, non egestas ligula imperdiet."); 197 - try lipsum.append(allocator, " Proin rhoncus tincidunt congue. Curabitur pretium mauris eu erat iaculis semper. Vestibulum augue tortor, vehicula id maximus at, semper eu leo. Vivamus feugiat at purus eu dapibus. Mauris luctus sollicitudin nibh, in placerat est mattis vitae. Morbi ut risus felis. Etiam lobortis mollis diam, id tempor odio sollicitudin a. Morbi congue, lacus ac accumsan consequat, ipsum eros facilisis est, in congue metus ex nec ligula. Vestibulum dolor ligula, interdum nec iaculis vel, interdum a diam. Curabitur mattis, risus at rhoncus gravida, diam est viverra diam, ut mattis augue nulla sed lacus."); 198 - try lipsum.append(allocator, " Duis rutrum orci sit amet dui imperdiet porta. In pulvinar imperdiet enim nec tristique. Etiam egestas pulvinar arcu, viverra mollis ipsum. Ut sit amet sapien nibh. Maecenas ut velit egestas, suscipit dolor vel, interdum tellus. Pellentesque faucibus euismod risus, ac vehicula erat sodales a. Aliquam egestas sit amet enim ac posuere. In id venenatis eros, et pharetra neque. Proin facilisis, odio id vehicula elementum, sapien ligula interdum dui, quis vestibulum est quam sit amet nisl. Aliquam in orci et felis aliquet tempus quis id magna. Sed interdum malesuada sem. Proin sagittis est metus, eu vestibulum nunc lacinia in. Vestibulum enim erat, cursus at justo at, porta feugiat quam. Phasellus vestibulum finibus nulla, at egestas augue imperdiet dapibus. Nunc in felis at ante congue interdum ut nec sapien."); 199 - try lipsum.append(allocator, " Etiam lacinia ornare mauris, ut lacinia elit sollicitudin non. Morbi cursus dictum enim, et vulputate mi sollicitudin vel. Fusce rutrum augue justo. Phasellus et mauris tincidunt erat lacinia bibendum sed eu orci. Sed nunc lectus, dignissim sit amet ultricies sit amet, efficitur eu urna. Fusce feugiat malesuada ipsum nec congue. Praesent ultrices metus eu pulvinar laoreet. Maecenas pellentesque, metus ac lobortis rhoncus, ligula eros consequat urna, eget dictum lectus sem ut orci. Donec lobortis, lacus sed bibendum auctor, odio turpis suscipit odio, vitae feugiat leo metus ac lectus. Curabitur sed sem arcu."); 200 - try lipsum.append(allocator, " Mauris nisi tortor, auctor venenatis turpis a, finibus condimentum lectus. Donec id velit odio. Curabitur ac varius lorem. Nam cursus quam in velit gravida, in bibendum purus fermentum. Sed non rutrum dui, nec ultrices ligula. Integer lacinia blandit nisl non sollicitudin. Praesent nec malesuada eros, sit amet tincidunt nunc."); 191 + try lipsum.append(alloc, " Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sit amet nunc porta, commodo tellus eu, blandit lectus. Aliquam dignissim rhoncus mi eu ultrices. Suspendisse lectus massa, bibendum sed lorem sit amet, egestas aliquam ante. Mauris venenatis nibh neque. Nulla a mi eget purus porttitor malesuada. Sed ac porta felis. Morbi ultricies urna nisi, et maximus elit convallis a. Morbi ut felis nec orci euismod congue efficitur egestas ex. Quisque eu feugiat magna. Pellentesque porttitor tortor ut iaculis dictum. Nulla erat neque, sollicitudin vitae enim nec, pharetra blandit tortor. Sed orci ante, condimentum vitae sodales in, sodales ut nulla. Suspendisse quam felis, aliquet ut neque a, lacinia sagittis turpis. Vivamus nec dui purus. Proin tempor nisl et porttitor consequat."); 192 + try lipsum.append(alloc, " Vivamus elit massa, commodo in laoreet nec, scelerisque ac orci. Donec nec ante sit amet nisi ullamcorper dictum quis non enim. Proin ante libero, consequat sit amet semper a, vulputate non odio. Mauris ut suscipit lacus. Mauris nec dolor id ex mollis tempor at quis ligula. Integer varius commodo ipsum id gravida. Sed ut lobortis est, id egestas nunc. In fringilla ullamcorper porttitor. Donec quis dignissim arcu, vitae sagittis tortor. Sed tempor porttitor arcu, sit amet elementum est ornare id. Morbi rhoncus, ipsum eget tincidunt volutpat, mauris enim vestibulum nibh, mollis iaculis ante enim quis enim. Donec pharetra odio vel ex fringilla, ut laoreet ipsum commodo. Praesent tempus, leo a pellentesque sodales, erat ipsum pretium nulla, id faucibus sem turpis at nibh. Aenean ut dui luctus, vehicula felis vel, aliquam nulla."); 193 + try lipsum.append(alloc, " Cras interdum mattis elit non varius. In condimentum velit a tellus sollicitudin interdum. Etiam pulvinar semper ex, eget congue ante tristique ut. Phasellus commodo magna magna, at fermentum tortor porttitor ac. Fusce a efficitur diam, a congue ante. Mauris maximus ultrices leo, non viverra ex hendrerit eu. Donec laoreet turpis nulla, eget imperdiet tortor mollis aliquam. Donec a est eget ante consequat rhoncus."); 194 + try lipsum.append(alloc, " Morbi facilisis libero nec viverra imperdiet. Ut dictum faucibus bibendum. Vestibulum ut nisl eu magna sollicitudin elementum vel eu ante. Phasellus euismod ligula massa, vel rutrum elit hendrerit ut. Vivamus id luctus lectus, at ullamcorper leo. Pellentesque in risus finibus, viverra ligula sed, porta nisl. Aliquam pretium accumsan placerat. Etiam a elit posuere, varius erat sed, aliquet quam. Morbi finibus gravida erat, non imperdiet dolor sollicitudin dictum. Aenean eget ullamcorper lacus, et hendrerit lorem. Quisque sed varius mauris."); 195 + try lipsum.append(alloc, " Nullam vitae euismod mauris, eu gravida dolor. Nunc vel urna laoreet justo faucibus tempus. Vestibulum tincidunt sagittis metus ac dignissim. Curabitur eleifend dolor consequat malesuada posuere. In hac habitasse platea dictumst. Fusce eget ipsum tincidunt, placerat orci ut, malesuada ante. Vivamus ultrices purus vel orci posuere, sed posuere eros porta. Vestibulum a tellus et tortor scelerisque varius. Pellentesque vel leo sed est semper bibendum. Mauris tellus ante, cursus et nunc vitae, dictum pellentesque ex. In tristique purus felis, non efficitur ante mollis id. Nulla quam nisi, suscipit sit amet mattis vel, placerat sit amet lectus. Vestibulum cursus auctor quam, at convallis felis euismod non. Sed nec magna nisi. Morbi scelerisque accumsan nunc, sed sagittis sem varius sit amet. Maecenas arcu dui, euismod et sem quis, condimentum blandit tellus."); 196 + try lipsum.append(alloc, " Nullam auctor lobortis libero non viverra. Mauris a imperdiet eros, a luctus est. Integer pellentesque eros et metus rhoncus egestas. Suspendisse eu risus mauris. Mauris posuere nulla in justo pharetra molestie. Maecenas sagittis at nunc et finibus. Vestibulum quis leo ac mauris malesuada vestibulum vitae eu enim. Ut et maximus elit. Pellentesque lorem felis, tristique vitae posuere vitae, auctor tempus magna. Fusce cursus purus sit amet risus pulvinar, non egestas ligula imperdiet."); 197 + try lipsum.append(alloc, " Proin rhoncus tincidunt congue. Curabitur pretium mauris eu erat iaculis semper. Vestibulum augue tortor, vehicula id maximus at, semper eu leo. Vivamus feugiat at purus eu dapibus. Mauris luctus sollicitudin nibh, in placerat est mattis vitae. Morbi ut risus felis. Etiam lobortis mollis diam, id tempor odio sollicitudin a. Morbi congue, lacus ac accumsan consequat, ipsum eros facilisis est, in congue metus ex nec ligula. Vestibulum dolor ligula, interdum nec iaculis vel, interdum a diam. Curabitur mattis, risus at rhoncus gravida, diam est viverra diam, ut mattis augue nulla sed lacus."); 198 + try lipsum.append(alloc, " Duis rutrum orci sit amet dui imperdiet porta. In pulvinar imperdiet enim nec tristique. Etiam egestas pulvinar arcu, viverra mollis ipsum. Ut sit amet sapien nibh. Maecenas ut velit egestas, suscipit dolor vel, interdum tellus. Pellentesque faucibus euismod risus, ac vehicula erat sodales a. Aliquam egestas sit amet enim ac posuere. In id venenatis eros, et pharetra neque. Proin facilisis, odio id vehicula elementum, sapien ligula interdum dui, quis vestibulum est quam sit amet nisl. Aliquam in orci et felis aliquet tempus quis id magna. Sed interdum malesuada sem. Proin sagittis est metus, eu vestibulum nunc lacinia in. Vestibulum enim erat, cursus at justo at, porta feugiat quam. Phasellus vestibulum finibus nulla, at egestas augue imperdiet dapibus. Nunc in felis at ante congue interdum ut nec sapien."); 199 + try lipsum.append(alloc, " Etiam lacinia ornare mauris, ut lacinia elit sollicitudin non. Morbi cursus dictum enim, et vulputate mi sollicitudin vel. Fusce rutrum augue justo. Phasellus et mauris tincidunt erat lacinia bibendum sed eu orci. Sed nunc lectus, dignissim sit amet ultricies sit amet, efficitur eu urna. Fusce feugiat malesuada ipsum nec congue. Praesent ultrices metus eu pulvinar laoreet. Maecenas pellentesque, metus ac lobortis rhoncus, ligula eros consequat urna, eget dictum lectus sem ut orci. Donec lobortis, lacus sed bibendum auctor, odio turpis suscipit odio, vitae feugiat leo metus ac lectus. Curabitur sed sem arcu."); 200 + try lipsum.append(alloc, " Mauris nisi tortor, auctor venenatis turpis a, finibus condimentum lectus. Donec id velit odio. Curabitur ac varius lorem. Nam cursus quam in velit gravida, in bibendum purus fermentum. Sed non rutrum dui, nec ultrices ligula. Integer lacinia blandit nisl non sollicitudin. Praesent nec malesuada eros, sit amet tincidunt nunc."); 201 201 202 202 // Try playing around with the amount of items in the scroll view to see how the scrollbar 203 203 // reacts. 204 204 for (0..10) |i| { 205 205 for (lipsum.items, 0..) |paragraph, j| { 206 206 const number = i * 10 + j; 207 - try model.rows.append(allocator, .{ .idx = number, .text = paragraph }); 207 + try model.rows.append(alloc, .{ .idx = number, .text = paragraph }); 208 208 } 209 209 } 210 210
+5 -5
examples/split_view.zig
··· 51 51 52 52 pub fn main(init: std.process.Init) !void { 53 53 const io = init.io; 54 - const allocator = init.gpa; 54 + const alloc = init.gpa; 55 55 56 - var app: vxfw.App = undefined; 57 - try app.init(io, allocator, init.environ_map); 56 + var buffer: [1024]u8 = undefined; 57 + var app: vxfw.App = try .init(io, alloc, init.environ_map, &buffer); 58 58 defer app.deinit(); 59 59 60 - const model = try allocator.create(Model); 61 - defer allocator.destroy(model); 60 + const model = try alloc.create(Model); 61 + defer alloc.destroy(model); 62 62 model.* = .{ 63 63 .lhs = .{ .text = "Left hand side" }, 64 64 .rhs = .{ .text = "right hand side" },
+3 -5
src/vxfw/App.zig
··· 17 17 vx: vaxis.Vaxis, 18 18 timers: std.ArrayList(vxfw.Tick), 19 19 wants_focus: ?vxfw.Widget, 20 - buffer: [1024]u8, 21 20 22 21 /// Runtime options 23 22 pub const Options = struct { ··· 28 27 /// Create an application. We require stable pointers to do the set up, so this will create an App 29 28 /// object on the heap. Call destroy when the app is complete to reset terminal state and release 30 29 /// resources 31 - pub fn init(self: *App, io: std.Io, allocator: Allocator, env_map: *std.process.Environ.Map) !void { 32 - self.* = .{ 30 + pub fn init(io: std.Io, allocator: Allocator, env_map: *std.process.Environ.Map, buffer: []u8) !App { 31 + return .{ 33 32 .io = io, 34 33 .allocator = allocator, 35 - .tty = try vaxis.Tty.init(io, &self.buffer), 34 + .tty = try vaxis.Tty.init(io, buffer), 36 35 .vx = try vaxis.init(io, allocator, env_map, .{ 37 36 .system_clipboard_allocator = allocator, 38 37 .kitty_keyboard_flags = .{ ··· 41 40 }), 42 41 .timers = .empty, 43 42 .wants_focus = null, 44 - .buffer = undefined, 45 43 }; 46 44 } 47 45