diff --git a/src/app.zig b/src/app.zig index 9e1a70e..83ed900 100644 --- a/src/app.zig +++ b/src/app.zig @@ -88,11 +88,11 @@ pub fn App(comptime E: type) type { pub fn stop(this: *@This()) !void { try this.interrupt(); - if (this.termios) |*termios| { + if (this.termios) |termios| { try terminal.disableMouseSupport(); try terminal.showCursor(); try terminal.restoreScreen(); - try terminal.disableRawMode(termios); + try terminal.disableRawMode(&termios); try terminal.exitAltScreen(); } this.termios = null; @@ -391,9 +391,9 @@ pub fn App(comptime E: type) type { pub fn panic_handler(msg: []const u8, _: ?*std.builtin.StackTrace, ret_addr: ?usize) noreturn { terminal.disableMouseSupport() catch {}; - terminal.exitAltScreen() catch {}; terminal.showCursor() catch {}; - var termios: posix.termios = .{ + terminal.restoreScreen() catch {}; + terminal.disableRawMode(&.{ .iflag = .{}, .lflag = .{}, .cflag = .{}, @@ -402,9 +402,8 @@ pub fn App(comptime E: type) type { .line = 0, .ispeed = undefined, .ospeed = undefined, - }; - terminal.disableRawMode(&termios) catch {}; - terminal.restoreScreen() catch {}; + }) catch {}; + terminal.exitAltScreen() catch {}; std.debug.defaultPanic(msg, ret_addr); } diff --git a/src/terminal.zig b/src/terminal.zig index 38c523a..c6085cf 100644 --- a/src/terminal.zig +++ b/src/terminal.zig @@ -197,7 +197,7 @@ pub fn enableRawMode(bak: *posix.termios) !void { } /// Reverts `enableRawMode` to restore initial functionality. -pub fn disableRawMode(bak: *posix.termios) !void { +pub fn disableRawMode(bak: *const posix.termios) !void { try posix.tcsetattr( posix.STDIN_FILENO, .FLUSH,