bugfix + some tweaks
authornotaz <notasas@gmail.com>
Fri, 7 Aug 2009 14:11:03 +0000 (14:11 +0000)
committernotaz <notasas@gmail.com>
Fri, 7 Aug 2009 14:11:03 +0000 (14:11 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@737 be3aeb3a-fb24-0410-a615-afba39da0efa

pico/sound/sound.c
platform/common/emu.c
platform/linux/in_evdev.c

index daf62b0..2b61fc9 100644 (file)
@@ -131,14 +131,15 @@ void PsndRerate(int preserve_state)
   }\r
 \r
   if (preserve_state) {\r
-    state = malloc(0x200);\r
+    state = malloc(0x204);\r
     if (state == NULL) return;\r
-    memcpy(state, YM2612GetRegs(), 0x200);\r
+    ym2612_pack_state();\r
+    memcpy(state, YM2612GetRegs(), 0x204);\r
   }\r
   YM2612Init(Pico.m.pal ? OSC_PAL/7 : OSC_NTSC/7, PsndRate);\r
   if (preserve_state) {\r
     // feed it back it's own registers, just like after loading state\r
-    memcpy(YM2612GetRegs(), state, 0x200);\r
+    memcpy(YM2612GetRegs(), state, 0x204);\r
     ym2612_unpack_state();\r
     if ((PicoAHW & PAHW_MCD) && !(Pico_mcd->s68k_regs[0x36] & 1) && (Pico_mcd->scd.Status_CDC & 1))\r
       cdda_start_play();\r
index becc0c2..4341d6a 100644 (file)
@@ -643,7 +643,8 @@ int emu_read_config(int game, int no_defaults)
                        // read global config, and apply game_def.cfg on top\r
                        make_config_cfg(cfg);\r
                        config_readsect(cfg, NULL);\r
-                       ret = config_readsect("game_def.cfg", sect);\r
+                       emu_make_path(cfg, "game_def.cfg", sizeof(cfg));\r
+                       ret = config_readsect(cfg, sect);\r
                }\r
 \r
                if (ret == 0)\r
index 4e23677..7866015 100644 (file)
@@ -317,6 +317,16 @@ static void in_evdev_set_blocking(void *drv_data, int y)
                perror("in_evdev: F_GETFL fcntl failed");
                return;
        }
+
+       if (flags & O_NONBLOCK) {
+               /* flush the event queue */
+               struct input_event ev;
+               do {
+                       ret = read(dev->fd, &ev, sizeof(ev));
+               }
+               while (ret == sizeof(ev));
+       }
+
        if (y)
                flags &= ~O_NONBLOCK;
        else