summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e65870b)
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>
return EXIT_FAILURE;
pb.mm = pb_mm_init(&pb);
return EXIT_FAILURE;
pb.mm = pb_mm_init(&pb);
- ui_timer_disable(&pb.cui->timer);
cui_result = cui_run(pb.cui, pb.mm, 0);
cui_result = cui_run(pb.cui, pb.mm, 0);
- ui_timer_disable(&cui->timer);
+ if (!cui->has_input)
+ discover_client_cancel_default(cui->client);
+ cui->has_input = true;
+
for (;;) {
int c = getch();
for (;;) {
int c = getch();
-/**
- * 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.
*/
/**
* cui_handle_resize - Handle the term resize.
*/
pb_log(" initrd '%s'\n", cod->bd->initrd);
pb_log(" args '%s'\n", cod->bd->args);
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);
/* Re-attach the items array. */
result = set_menu_items(cui->main->ncm, cui->main->items);
assert(pb_protocol_device_cmp(dev, cod->dev));
pmenu_remove(cui->main, i);
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. */
}
/* Re-attach the items array. */
cui->c_sig = pb_cui_sig;
cui->platform_info = 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. */
cui->waitset = waitset_create(cui);
/* Loop here for scripts that just started the server. */
#include <signal.h>
#include "ui/common/joystick.h"
#include <signal.h>
#include "ui/common/joystick.h"
-#include "ui/common/timer.h"
#include "nc-menu.h"
#include "nc-boot-editor.h"
#include "nc-menu.h"
#include "nc-boot-editor.h"
struct cui {
enum pb_nc_sig c_sig;
struct cui {
enum pb_nc_sig c_sig;
sig_atomic_t abort;
sig_atomic_t resize;
struct nc_scr *current;
struct pmenu *main;
sig_atomic_t abort;
sig_atomic_t resize;
struct nc_scr *current;
struct pmenu *main;
struct waitset *waitset;
struct discover_client *client;
struct pjs *pjs;
struct waitset *waitset;
struct discover_client *client;
struct pjs *pjs;
return cui_from_pmenu(item->pmenu);
}
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;
-}
-
enum opt_value show_help;
const char *log_file;
enum opt_value reset_defaults;
enum opt_value show_help;
const char *log_file;
enum opt_value reset_defaults;
- enum opt_value use_timeout;
enum opt_value show_version;
};
enum opt_value show_version;
};
{"help", no_argument, NULL, 'h'},
{"log", required_argument, NULL, 'l'},
{"reset-defaults", no_argument, NULL, 'r'},
{"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},
};
{"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",
};
static const struct opts default_values = {
.log_file = "/var/log/petitboot/petitboot-nc.log",
};
case 'l':
opts->log_file = optarg;
break;
case 'l':
opts->log_file = optarg;
break;
- case 't':
- opts->use_timeout = opt_yes;
- break;
case 'r':
opts->reset_defaults = opt_yes;
break;
case 'r':
opts->reset_defaults = opt_yes;
break;
-/**
- * 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.
*/
/**
* ps3_mm_init - Setup the main menu instance.
*/
DBGS("%d\n", signum);
switch (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);
case SIGWINCH:
if (ps3.cui)
cui_resize(ps3.cui);
ps3.mm = ps3_mm_init(&ps3);
ps3.svm = ps3_svm_init(&ps3);
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);
cui_result = cui_run(ps3.cui, ps3.mm, ps3.values.default_item);
pmenu_delete(ps3.mm);