bugfixes
authornotaz <notasas@gmail.com>
Sun, 20 Dec 2009 19:45:40 +0000 (19:45 +0000)
committernotaz <notasas@gmail.com>
Sun, 20 Dec 2009 19:45:40 +0000 (19:45 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@844 be3aeb3a-fb24-0410-a615-afba39da0efa

pico/draw.c
platform/linux/in_evdev.c

index 712e861..e474168 100644 (file)
@@ -1421,9 +1421,10 @@ PICO_INTERNAL void PicoFrameStart(void)
 \r
   if (rendstatus != rendstatus_old || lines != rendlines) {\r
     rendlines = lines;\r
-    rendstatus_old = rendstatus;\r
+    // mode_change() might reset rendstatus_old by calling SetColorFormat\r
     emu_video_mode_change((lines == 240) ? 0 : 8,\r
       lines, (Pico.video.reg[12] & 1) ? 0 : 1);\r
+    rendstatus_old = rendstatus;\r
   }\r
 \r
   if (PicoOpt & POPT_ALT_RENDERER)\r
index 7866015..df40368 100644 (file)
@@ -126,11 +126,17 @@ static const char * const in_evdev_keys[KEY_CNT] = {
 
 static void in_evdev_probe(void)
 {
+       long keybits[KEY_CNT / sizeof(long) / 8];
+       long absbits[(ABS_MAX+1) / sizeof(long) / 8];
        int i;
 
+       // the kernel might support and return less keys then we know about,
+       // so make sure the buffers are clear.
+       memset(keybits, 0, sizeof(keybits));
+       memset(absbits, 0, sizeof(absbits));
+
        for (i = 0;; i++)
        {
-               int keybits[KEY_CNT / sizeof(int)], absbits[(ABS_MAX+1)/sizeof(int)];
                int support = 0, count = 0;
                in_evdev_t *dev;
                int u, ret, fd;