mod(app): interrupt application correctly
This commit is contained in:
10
src/app.zig
10
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.
|
||||
|
||||
Reference in New Issue
Block a user