summaryrefslogtreecommitdiffstats
path: root/ui/ncurses
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-05-21 14:26:12 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-06-24 12:52:50 +0800
commit78c82fbd0a481249de1763b5d43bb9876ea612bd (patch)
tree6a18be70349e410243f9fd3fc8848da8b91165c5 /ui/ncurses
parente65870b0d7638ad9e848b87526a04e32bc96f756 (diff)
downloadtalos-petitboot-78c82fbd0a481249de1763b5d43bb9876ea612bd.tar.gz
talos-petitboot-78c82fbd0a481249de1763b5d43bb9876ea612bd.zip
ui/ncurses: Add cancel-default reporting
When we first see key input, we can tell the discover server to cancel the default boot. Untested on ps3. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'ui/ncurses')
-rw-r--r--ui/ncurses/generic-main.c1
-rw-r--r--ui/ncurses/nc-cui.c35
-rw-r--r--ui/ncurses/nc-cui.h14
-rw-r--r--ui/ncurses/ps3-main.c34
4 files changed, 6 insertions, 78 deletions
diff --git a/ui/ncurses/generic-main.c b/ui/ncurses/generic-main.c
index 560e3e5..6280a34 100644
--- a/ui/ncurses/generic-main.c
+++ b/ui/ncurses/generic-main.c
@@ -259,7 +259,6 @@ int main(int argc, char *argv[])
return EXIT_FAILURE;
pb.mm = pb_mm_init(&pb);
- ui_timer_disable(&pb.cui->timer);
cui_result = cui_run(pb.cui, pb.mm, 0);
diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c
index bd4f6b8..82e534d 100644
--- a/ui/ncurses/nc-cui.c
+++ b/ui/ncurses/nc-cui.c
@@ -222,7 +222,10 @@ static int cui_process_key(void *arg)
assert(cui->current);
- ui_timer_disable(&cui->timer);
+ if (!cui->has_input)
+ discover_client_cancel_default(cui->client);
+ cui->has_input = true;
+
for (;;) {
int c = getch();
@@ -258,24 +261,6 @@ static int cui_process_js(void *arg)
}
/**
- * cui_handle_timeout - Handle the timeout.
- */
-
-static void cui_handle_timeout(struct ui_timer *timer)
-{
- struct cui *cui = cui_from_timer(timer);
- struct pmenu_item *i = pmenu_find_selected(cui->main);
-
-#if defined(DEBUG)
- {
- struct cui_opt_data *cod = cod_from_item(i);
- assert(cod && (cod->opt_hash == cui->default_item));
- }
-#endif
- i->on_execute(i);
-}
-
-/**
* cui_handle_resize - Handle the term resize.
*/
@@ -399,12 +384,6 @@ static int cui_boot_option_add(struct device *dev, struct boot_option *opt,
pb_log(" initrd '%s'\n", cod->bd->initrd);
pb_log(" args '%s'\n", cod->bd->args);
- /* If this is the default_item select it and start timer. */
- if (cod->opt_hash == cui->default_item) {
- selected = i->nci;
- ui_timer_kick(&cui->timer);
- }
-
/* Re-attach the items array. */
result = set_menu_items(cui->main->ncm, cui->main->items);
@@ -459,11 +438,6 @@ static void cui_device_remove(struct device *dev, void *arg)
assert(pb_protocol_device_cmp(dev, cod->dev));
pmenu_remove(cui->main, i);
-
- /* If this is the default_item disable timer. */
-
- if (cod->opt_hash == cui->default_item)
- ui_timer_disable(&cui->timer);
}
/* Re-attach the items array. */
@@ -527,7 +501,6 @@ struct cui *cui_init(void* platform_info,
cui->c_sig = pb_cui_sig;
cui->platform_info = platform_info;
- cui->timer.handle_timeout = cui_handle_timeout;
cui->waitset = waitset_create(cui);
/* Loop here for scripts that just started the server. */
diff --git a/ui/ncurses/nc-cui.h b/ui/ncurses/nc-cui.h
index 69c15d4..a5ac5d5 100644
--- a/ui/ncurses/nc-cui.h
+++ b/ui/ncurses/nc-cui.h
@@ -22,7 +22,6 @@
#include <signal.h>
#include "ui/common/joystick.h"
-#include "ui/common/timer.h"
#include "nc-menu.h"
#include "nc-boot-editor.h"
@@ -49,11 +48,11 @@ struct cui_opt_data {
struct cui {
enum pb_nc_sig c_sig;
+ bool has_input;
sig_atomic_t abort;
sig_atomic_t resize;
struct nc_scr *current;
struct pmenu *main;
- struct ui_timer timer;
struct waitset *waitset;
struct discover_client *client;
struct pjs *pjs;
@@ -94,15 +93,4 @@ static inline struct cui *cui_from_item(struct pmenu_item *item)
return cui_from_pmenu(item->pmenu);
}
-static inline struct cui *cui_from_timer(struct ui_timer *timer)
-{
- struct cui *cui;
-
- cui = (struct cui *)((char *)timer
- - (size_t)&((struct cui *)0)->timer);
- assert(cui->c_sig == pb_cui_sig);
-
- return cui;
-}
-
#endif
diff --git a/ui/ncurses/ps3-main.c b/ui/ncurses/ps3-main.c
index 3b9fab1..5735055 100644
--- a/ui/ncurses/ps3-main.c
+++ b/ui/ncurses/ps3-main.c
@@ -70,7 +70,6 @@ struct opts {
enum opt_value show_help;
const char *log_file;
enum opt_value reset_defaults;
- enum opt_value use_timeout;
enum opt_value show_version;
};
@@ -84,11 +83,10 @@ static int opts_parse(struct opts *opts, int argc, char *argv[])
{"help", no_argument, NULL, 'h'},
{"log", required_argument, NULL, 'l'},
{"reset-defaults", no_argument, NULL, 'r'},
- {"timeout", no_argument, NULL, 't'},
{"version", no_argument, NULL, 'V'},
{ NULL, 0, NULL, 0},
};
- static const char short_options[] = "hl:trV";
+ static const char short_options[] = "hl:rV";
static const struct opts default_values = {
.log_file = "/var/log/petitboot/petitboot-nc.log",
};
@@ -109,9 +107,6 @@ static int opts_parse(struct opts *opts, int argc, char *argv[])
case 'l':
opts->log_file = optarg;
break;
- case 't':
- opts->use_timeout = opt_yes;
- break;
case 'r':
opts->reset_defaults = opt_yes;
break;
@@ -399,21 +394,6 @@ static int ps3_hot_key(struct pmenu __attribute__((unused)) *menu,
}
/**
- * ps3_timer_update - Timer callback.
- */
-
-static void ps3_timer_update(struct ui_timer *timer, unsigned int timeout)
-{
- struct ps3_cui *ps3 = ps3_from_cui(cui_from_timer(timer));
-
- //FIXME: make scr:timer.
- // nc_scr_timer_update(&ps3.mm->scr, timeout);
-
- nc_scr_status_printf(&ps3->mm->scr,
- "Welcome to Petitboot (timeout %u sec)", timeout);
-}
-
-/**
* ps3_mm_init - Setup the main menu instance.
*/
@@ -566,10 +546,6 @@ static void sig_handler(int signum)
DBGS("%d\n", signum);
switch (signum) {
- case SIGALRM:
- if (ps3.cui)
- ui_timer_sigalrm(&ps3.cui->timer);
- break;
case SIGWINCH:
if (ps3.cui)
cui_resize(ps3.cui);
@@ -666,14 +642,6 @@ int main(int argc, char *argv[])
ps3.mm = ps3_mm_init(&ps3);
ps3.svm = ps3_svm_init(&ps3);
- if (opts.use_timeout != opt_yes
- || ps3.values.timeout == ps3_timeout_forever)
- ui_timer_disable(&ps3.cui->timer);
- else {
- ps3.cui->timer.update_display = ps3_timer_update;
- ui_timer_init(&ps3.cui->timer, ps3.values.timeout);
- }
-
cui_result = cui_run(ps3.cui, ps3.mm, ps3.values.default_item);
pmenu_delete(ps3.mm);
OpenPOWER on IntegriCloud