summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Honnef <dominik@honnef.co>2015-06-06 23:25:03 +0200
committerDominik Honnef <dominik@honnef.co>2015-06-07 07:26:26 +0200
commit98f62b191a29f21bdd49e32d1c1459d1f96c57b0 (patch)
tree4628ef79700de9d59e413587cbc341a4a15f16cb
parent52771a6226188ec20f2c1bdc481e5c15ac4d119a (diff)
Use ncurses's newterm instead of swapping stdout and stderr
-rw-r--r--src/curses/curses.go13
1 files 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 <ncurses.h>
#include <locale.h>
#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 {