input def bind fix, rnd note
authornotaz <notasas@gmail.com>
Sun, 9 Aug 2009 15:00:03 +0000 (15:00 +0000)
committernotaz <notasas@gmail.com>
Sun, 9 Aug 2009 15:00:03 +0000 (15:00 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@742 be3aeb3a-fb24-0410-a615-afba39da0efa

platform/common/input.c
platform/gp2x/soc_pollux.c

index b6df2ba..e3cf071 100644 (file)
@@ -718,7 +718,7 @@ void in_config_end(void)
        int i;
 
        for (i = 0; i < IN_MAX_DEVS; i++) {
-               int n, ret, count, *binds, *def_binds;
+               int n, t, ret, count, *binds, *def_binds;
                in_dev_t *dev = &in_devices[i];
 
                if (dev->binds == NULL)
@@ -728,9 +728,18 @@ void in_config_end(void)
                binds = dev->binds;
                def_binds = binds + count * IN_BINDTYPE_COUNT;
 
-               for (n = 0; n < count * IN_BINDTYPE_COUNT; n++)
-                       if (binds[n] == -1)
-                               binds[n] = def_binds[n];
+               for (n = 0; n < count; n++) {
+                       int is_default = 1;
+                       for (t = 0; t < IN_BINDTYPE_COUNT; t++)
+                               if (binds[IN_BIND_OFFS(n, t)] == -1)
+                                       binds[IN_BIND_OFFS(n, t)] = 0;
+                               else
+                                       is_default = 0;
+
+                       if (is_default)
+                               for (t = 0; t < IN_BINDTYPE_COUNT; t++)
+                                       binds[IN_BIND_OFFS(n, t)] = def_binds[IN_BIND_OFFS(n, t)];
+               }
 
                if (dev->drv_data == NULL)
                        continue;
index 922305a..3b2ca2d 100644 (file)
@@ -1,3 +1,11 @@
+/*
+ * <random_info=mem_map>
+ * 00000000-029fffff linux (42MB)
+ * 02a00000-02dfffff fb (4MB, 153600B really used)
+ * 02e00000-02ffffff sound dma (2MB)
+ * 03000000-03ffffff MPEGDEC (?, 16MB)
+ * </random_info>
+ */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>