From 98f62b191a29f21bdd49e32d1c1459d1f96c57b0 Mon Sep 17 00:00:00 2001 From: Dominik Honnef Date: Sat, 6 Jun 2015 23:25:03 +0200 Subject: [PATCH] Use ncurses's newterm instead of swapping stdout and stderr --- src/curses/curses.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/curses/curses.go b/src/curses/curses.go index 985dd87f..fc0fef20 100644 --- a/src/curses/curses.go +++ b/src/curses/curses.go @@ -4,11 +4,6 @@ package curses #include #include #cgo LDFLAGS: -lncurses -void swapOutput() { - FILE* temp = stdout; - stdout = stderr; - stderr = temp; -} */ import "C" @@ -142,6 +137,7 @@ var ( _colorMap map[int]int _prevDownTime time.Time _clickY []int + _screen *C.SCREEN Default16 *ColorTheme Dark256 *ColorTheme Light256 *ColorTheme @@ -254,10 +250,9 @@ func Init(theme *ColorTheme, black bool, mouse bool) { // syscall.Dup2(int(in.Fd()), int(os.Stdin.Fd())) } - C.swapOutput() - C.setlocale(C.LC_ALL, C.CString("")) - C.initscr() + _screen = C.newterm(nil, C.stderr, C.stdin) + C.set_term(_screen) if mouse { C.mousemask(C.ALL_MOUSE_EVENTS, nil) } @@ -316,7 +311,7 @@ func initPairs(theme *ColorTheme, black bool) { func Close() { C.endwin() - C.swapOutput() + C.delscreen(_screen) } func GetBytes() []byte {