From a4025790b5eded4501bb659c682004202880a76b Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 11 Nov 2012 22:08:38 +0200 Subject: [PATCH] input: handle unprobed devices better --- input.c | 14 ++++++++++---- menu.c | 6 +++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/input.c b/input.c index 8030e1f..12654e4 100644 --- a/input.c +++ b/input.c @@ -514,6 +514,9 @@ int in_get_config(int dev_id, int what, void *val) case IN_CFG_KEY_NAMES: return -1; /* not implemented */ default: + if (!dev->probed) + return -1; + return DRV(dev->drv_id).get_config(dev->drv_data, what, ival); } @@ -527,9 +530,12 @@ static int in_set_blocking(int is_blocking) /* have_async_devs means we will have to do all reads async anyway.. */ if (!in_have_async_devs) { for (i = 0; i < in_dev_count; i++) { - if (in_devices[i].probed) - DRV(in_devices[i].drv_id).set_config(in_devices[i].drv_data, - IN_CFG_BLOCKING, is_blocking); + if (!in_devices[i].probed) + continue; + + DRV(in_devices[i].drv_id).set_config( + in_devices[i].drv_data, IN_CFG_BLOCKING, + is_blocking); } } @@ -876,7 +882,7 @@ void in_clean_binds(void) int ret, count, *binds, *def_binds; in_dev_t *dev = &in_devices[i]; - if (dev->binds == NULL || dev->drv_data == NULL) + if (dev->binds == NULL || !dev->probed) continue; count = dev->key_count; diff --git a/menu.c b/menu.c index 640f9b7..1b429c8 100644 --- a/menu.c +++ b/menu.c @@ -1307,7 +1307,7 @@ static void draw_key_config(const me_bind_action *opts, int opt_cnt, int player_ if (dev_id < 0) dev_name = "(all devices)"; else - dev_name = in_get_dev_name(dev_id, 1, 1); + dev_name = in_get_dev_name(dev_id, 0, 1); w = strlen(dev_name) * me_mfont_w; if (w < 30 * me_mfont_w) w = 30 * me_mfont_w; @@ -1370,7 +1370,7 @@ static void key_config_loop(const me_bind_action *opts, int opt_cnt, int player_ for (i = 0, dev_id--; i < IN_MAX_DEVS + 1; i++, dev_id--) { if (dev_id < -1) dev_id = IN_MAX_DEVS - 1; - if (dev_id == -1 || in_get_dev_name(dev_id, 1, 0) != NULL) + if (dev_id == -1 || in_get_dev_name(dev_id, 0, 0) != NULL) break; } continue; @@ -1378,7 +1378,7 @@ static void key_config_loop(const me_bind_action *opts, int opt_cnt, int player_ for (i = 0, dev_id++; i < IN_MAX_DEVS; i++, dev_id++) { if (dev_id >= IN_MAX_DEVS) dev_id = -1; - if (dev_id == -1 || in_get_dev_name(dev_id, 1, 0) != NULL) + if (dev_id == -1 || in_get_dev_name(dev_id, 0, 0) != NULL) break; } continue; -- 2.39.2