savestate and other bugfixes
[fceu.git] / drivers / gp2x / input.c
index 43da4b3..c2f88f6 100644 (file)
@@ -22,6 +22,8 @@
 #include "../../video.h"
 #include "usbjoy.h"
 
+extern int FSkip;
+
 /* UsrInputType[] is user-specified.  InputType[] is current
        (game loading can override user settings)
 */
@@ -86,7 +88,7 @@ static void do_emu_acts(uint32 acts)
                                FCEUD_Update(XBuf+8,NULL,0);
                                while( !((keys = gp2x_joystick_read(1)) & (GP2X_X|GP2X_Y)) ) usleep(50*1024);
                                if (keys & GP2X_X) do_it = 0;
-                               FCEU_DispMessage("");
+                               FCEU_CancelDispMessage();
                        }
                        if (do_it) FCEUI_LoadState();
                }
@@ -105,7 +107,7 @@ static void do_emu_acts(uint32 acts)
                                        FCEUD_Update(XBuf+8,NULL,0);
                                        while( !((keys = gp2x_joystick_read(1)) & (GP2X_X|GP2X_Y)) ) usleep(50*1024);
                                        if (keys & GP2X_X) do_it = 0;
-                                       FCEU_DispMessage("");
+                                       FCEU_CancelDispMessage();
                                }
                        }
                        if (do_it) FCEUI_SaveState();
@@ -184,7 +186,7 @@ static void do_fake_mouse(unsigned long keys)
 }
 
 
-void FCEUD_UpdateInput(void)
+static void FCEUD_UpdateInput(void)
 {
        static int volpushed_frames = 0;
        static int turbo_rate_cnt_a[2] = {0,0}, turbo_rate_cnt_b[2] = {0,0};
@@ -195,6 +197,7 @@ void FCEUD_UpdateInput(void)
        if ((down(VOL_DOWN) && down(VOL_UP)) || (keys & (GP2X_L|GP2X_L|GP2X_START)) == (GP2X_L|GP2X_L|GP2X_START))
        {
                Exit = 1;
+               FSkip = 0;      /* force rendering the last frame for menu */
                return;
        }
        else if (down(VOL_UP))