diff --git a/src/App.zig b/src/App.zig index 60e0292a1..ab95b8b6f 100644 --- a/src/App.zig +++ b/src/App.zig @@ -143,10 +143,7 @@ pub fn run(self: *App) !void { /// Drain the mailbox. fn drainMailbox(self: *App) !void { - var drain = self.mailbox.drain(); - defer drain.deinit(); - - while (drain.next()) |message| { + while (self.mailbox.pop()) |message| { log.debug("mailbox message={s}", .{@tagName(message)}); switch (message) { .new_window => |msg| _ = try self.newWindow(msg), diff --git a/src/renderer/Thread.zig b/src/renderer/Thread.zig index 34944b8b1..04846b79a 100644 --- a/src/renderer/Thread.zig +++ b/src/renderer/Thread.zig @@ -238,14 +238,7 @@ fn drainMailbox(self: *Thread) !void { const zone = trace(@src()); defer zone.end(); - // This holds the mailbox lock for the duration of the drain. The - // expectation is that all our message handlers will be non-blocking - // ENOUGH to not mess up throughput on producers. - - var drain = self.mailbox.drain(); - defer drain.deinit(); - - while (drain.next()) |message| { + while (self.mailbox.pop()) |message| { log.debug("mailbox message={}", .{message}); switch (message) { .focus => |v| { diff --git a/src/termio/Thread.zig b/src/termio/Thread.zig index 7c75d9603..78968de48 100644 --- a/src/termio/Thread.zig +++ b/src/termio/Thread.zig @@ -162,24 +162,19 @@ fn drainMailbox(self: *Thread) !void { // expectation is that all our message handlers will be non-blocking // ENOUGH to not mess up throughput on producers. var redraw: bool = false; - { - var drain = self.mailbox.drain(); - defer drain.deinit(); + while (self.mailbox.pop()) |message| { + // If we have a message we always redraw + redraw = true; - while (drain.next()) |message| { - // If we have a message we always redraw - redraw = true; - - log.debug("mailbox message={}", .{message}); - switch (message) { - .resize => |v| try self.impl.resize(v.grid_size, v.screen_size, v.padding), - .write_small => |v| try self.impl.queueWrite(v.data[0..v.len]), - .write_stable => |v| try self.impl.queueWrite(v), - .write_alloc => |v| { - defer v.alloc.free(v.data); - try self.impl.queueWrite(v.data); - }, - } + log.debug("mailbox message={}", .{message}); + switch (message) { + .resize => |v| try self.impl.resize(v.grid_size, v.screen_size, v.padding), + .write_small => |v| try self.impl.queueWrite(v.data[0..v.len]), + .write_stable => |v| try self.impl.queueWrite(v), + .write_alloc => |v| { + defer v.alloc.free(v.data); + try self.impl.queueWrite(v.data); + }, } }