]> git.ozlabs.org Git - petitboot/blobdiff - ui/ncurses/nc-cui.c
lib/waiter: Add timeout waiters
[petitboot] / ui / ncurses / nc-cui.c
index 3f8995eba809c92b46417e2c70be529dbab2fdc5..ef3fd23b8474711a65d1b78d77845d1cf22c7acb 100644 (file)
@@ -199,6 +199,19 @@ struct nc_scr *cui_set_current(struct cui *cui, struct nc_scr *scr)
        return old;
 }
 
+static bool process_global_keys(struct cui *cui, int key)
+{
+       switch (key) {
+       case 0xc:
+               if (cui->current && cui->current->main_ncw) {
+                       redrawwin(cui->current->main_ncw);
+                       wrefresh(cui->current->main_ncw);
+               }
+               return true;
+       }
+       return false;
+}
+
 /**
  * cui_process_key - Process input on stdin.
  */
@@ -216,6 +229,9 @@ static int cui_process_key(void *arg)
                if (c == ERR)
                        break;
 
+               if (process_global_keys(cui, c))
+                       continue;
+
                cui->current->process_key(cui->current, c);
        }
 
@@ -556,7 +572,7 @@ retry_start:
        atexit(nc_atexit);
        nc_start();
 
-       waiter_register(cui->waitset, STDIN_FILENO, WAIT_IN,
+       waiter_register_io(cui->waitset, STDIN_FILENO, WAIT_IN,
                        cui_process_key, cui);
 
        if (js_map) {
@@ -564,7 +580,7 @@ retry_start:
                cui->pjs = pjs_init(cui, js_map);
 
                if (cui->pjs)
-                       waiter_register(cui->waitset, pjs_get_fd(cui->pjs),
+                       waiter_register_io(cui->waitset, pjs_get_fd(cui->pjs),
                                        WAIT_IN, cui_process_js, cui);
        }