aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sdn.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/sdn.cpp b/sdn.cpp
index ad72f98..9a1f5c8 100644
--- a/sdn.cpp
+++ b/sdn.cpp
@@ -814,8 +814,7 @@ int main (int argc, char *argv[]) {
}
locale::global (locale (""));
- if (!initscr () || cbreak () == ERR || noecho () == ERR || nonl () == ERR
- || halfdelay (1) == ERR || keypad (stdscr, TRUE) == ERR) {
+ if (!initscr () || cbreak () == ERR || noecho () == ERR || nonl () == ERR) {
cerr << "cannot initialize screen" << endl;
return 1;
}
@@ -825,6 +824,14 @@ int main (int argc, char *argv[]) {
g.start_dir = g.cwd;
update ();
+ // Invoking keypad() earlier would make ncurses flush its output buffer,
+ // which would worsen start-up flickering
+ if (halfdelay (1) == ERR || keypad (stdscr, TRUE) == ERR) {
+ endwin ();
+ cerr << "cannot initialize screen" << endl;
+ return 1;
+ }
+
wint_t c;
while (1) {
inotify_check ();