From 4be3451fbfaabe45073b98b2e57fa144c82f53ad Mon Sep 17 00:00:00 2001 From: Yves Biener Date: Thu, 7 Nov 2024 21:55:19 +0100 Subject: [PATCH] mod(app): interrupt application correctly --- src/app.zig | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/app.zig b/src/app.zig index e651ea5..baf65e1 100644 --- a/src/app.zig +++ b/src/app.zig @@ -79,11 +79,12 @@ pub fn App(comptime E: type, comptime R: fn (comptime bool) type, comptime fulls this.quit_event.reset(); this.thread = try std.Thread.spawn(.{}, @This().run, .{this}); - if (this.termios) |_| return; var termios: std.posix.termios = undefined; try terminal.enableRawMode(&termios); - this.termios = termios; + if (this.termios) |_| {} else { + this.termios = termios; + } if (fullscreen) { try terminal.saveScreen(); try terminal.enterAltScreen(); @@ -92,6 +93,10 @@ pub fn App(comptime E: type, comptime R: fn (comptime bool) type, comptime fulls pub fn interrupt(this: *@This()) !void { this.quit_event.set(); + if (fullscreen) { + try terminal.existAltScreen(); + try terminal.restoreScreen(); + } if (this.thread) |thread| { thread.join(); this.thread = null; @@ -107,6 +112,7 @@ pub fn App(comptime E: type, comptime R: fn (comptime bool) type, comptime fulls try terminal.restoreScreen(); } } + this.termios = null; } /// Quit the application loop.