input: handle unprobed devices better
authornotaz <notasas@gmail.com>
Sun, 11 Nov 2012 20:08:38 +0000 (22:08 +0200)
committernotaz <notasas@gmail.com>
Sun, 11 Nov 2012 20:08:38 +0000 (22:08 +0200)
input.c
menu.c

diff --git a/input.c b/input.c
index 8030e1f..12654e4 100644 (file)
--- 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 (file)
--- 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)\r
                dev_name = "(all devices)";\r
        else\r
-               dev_name = in_get_dev_name(dev_id, 1, 1);\r
+               dev_name = in_get_dev_name(dev_id, 0, 1);\r
        w = strlen(dev_name) * me_mfont_w;\r
        if (w < 30 * me_mfont_w)\r
                w = 30 * me_mfont_w;\r
@@ -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--) {\r
                                        if (dev_id < -1)\r
                                                dev_id = IN_MAX_DEVS - 1;\r
-                                       if (dev_id == -1 || in_get_dev_name(dev_id, 1, 0) != NULL)\r
+                                       if (dev_id == -1 || in_get_dev_name(dev_id, 0, 0) != NULL)\r
                                                break;\r
                                }\r
                                continue;\r
@@ -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++) {\r
                                        if (dev_id >= IN_MAX_DEVS)\r
                                                dev_id = -1;\r
-                                       if (dev_id == -1 || in_get_dev_name(dev_id, 1, 0) != NULL)\r
+                                       if (dev_id == -1 || in_get_dev_name(dev_id, 0, 0) != NULL)\r
                                                break;\r
                                }\r
                                continue;\r