update inputs on vsync
authornotaz <notasas@gmail.com>
Wed, 15 Dec 2010 10:50:22 +0000 (12:50 +0200)
committernotaz <notasas@gmail.com>
Thu, 16 Dec 2010 16:37:56 +0000 (18:37 +0200)
flip is not called when emulation gets stuck, making
impossible to return to menu.

frontend/plugin_lib.c

index 7110b35..83ae892 100644 (file)
@@ -93,15 +93,6 @@ int pl_fbdev_set_mode(int w, int h, int bpp)
 
 void pl_fbdev_flip(void)
 {
-       /* doing input here because the pad is polled
-        * thousands of times for some reason */
-       int actions[IN_BINDTYPE_COUNT] = { 0, };
-
-       in_update(actions);
-       if (actions[IN_BINDTYPE_EMU] & PEV_MENU)
-               stop = 1;
-       keystate = actions[IN_BINDTYPE_PLAYER12];
-
        flip_cnt++;
        print_fps();
        print_cpu_usage();
@@ -114,6 +105,16 @@ void pl_fbdev_finish(void)
 {
 }
 
+static void update_input(void)
+{
+       int actions[IN_BINDTYPE_COUNT] = { 0, };
+
+       in_update(actions);
+       if (actions[IN_BINDTYPE_EMU] & PEV_MENU)
+               stop = 1;
+       keystate = actions[IN_BINDTYPE_PLAYER12];
+}
+
 /* called on every vsync */
 void pl_frame_limit(void)
 {
@@ -121,6 +122,10 @@ void pl_frame_limit(void)
        static int oldsec;
        struct timeval tv;
 
+       /* doing input here because the pad is polled
+        * thousands of times per frame for some reason */
+       update_input();
+
        pcnt_end(PCNT_ALL);
        gettimeofday(&tv, 0);