aboutsummaryrefslogtreecommitdiff
path: root/frontend/plat_sdl.c
diff options
context:
space:
mode:
authornotaz2012-05-01 01:13:15 +0300
committernotaz2012-05-27 20:57:02 +0300
commit2e6189bc568b4e95cf5b04cf84375b3e918675f1 (patch)
treee0165451408662a411332a1df3ddabf6e642f04c /frontend/plat_sdl.c
parentdd4d5a35678c8ff7f9a7c0ac42be354671534f96 (diff)
downloadpcsx_rearmed-2e6189bc568b4e95cf5b04cf84375b3e918675f1.tar.gz
pcsx_rearmed-2e6189bc568b4e95cf5b04cf84375b3e918675f1.tar.bz2
pcsx_rearmed-2e6189bc568b4e95cf5b04cf84375b3e918675f1.zip
frontend: minor tweaks
Diffstat (limited to 'frontend/plat_sdl.c')
-rw-r--r--frontend/plat_sdl.c44
1 files changed, 28 insertions, 16 deletions
diff --git a/frontend/plat_sdl.c b/frontend/plat_sdl.c
index b9a27c3..9be12a5 100644
--- a/frontend/plat_sdl.c
+++ b/frontend/plat_sdl.c
@@ -19,25 +19,26 @@
#include "revision.h"
static const struct in_default_bind in_sdl_defbinds[] = {
- { SDLK_UP, IN_BINDTYPE_PLAYER12, DKEY_UP },
- { SDLK_DOWN, IN_BINDTYPE_PLAYER12, DKEY_DOWN },
- { SDLK_LEFT, IN_BINDTYPE_PLAYER12, DKEY_LEFT },
- { SDLK_RIGHT, IN_BINDTYPE_PLAYER12, DKEY_RIGHT },
- { SDLK_d, IN_BINDTYPE_PLAYER12, DKEY_TRIANGLE },
- { SDLK_z, IN_BINDTYPE_PLAYER12, DKEY_CROSS },
- { SDLK_x, IN_BINDTYPE_PLAYER12, DKEY_CIRCLE },
- { SDLK_s, IN_BINDTYPE_PLAYER12, DKEY_SQUARE },
- { SDLK_v, IN_BINDTYPE_PLAYER12, DKEY_START },
- { SDLK_c, IN_BINDTYPE_PLAYER12, DKEY_SELECT },
- { SDLK_w, IN_BINDTYPE_PLAYER12, DKEY_L1 },
- { SDLK_r, IN_BINDTYPE_PLAYER12, DKEY_R1 },
- { SDLK_e, IN_BINDTYPE_PLAYER12, DKEY_L2 },
- { SDLK_t, IN_BINDTYPE_PLAYER12, DKEY_R2 },
- { SDLK_ESCAPE, IN_BINDTYPE_EMU, SACTION_ENTER_MENU },
- { 0, 0, 0 }
+ { SDLK_UP, IN_BINDTYPE_PLAYER12, DKEY_UP },
+ { SDLK_DOWN, IN_BINDTYPE_PLAYER12, DKEY_DOWN },
+ { SDLK_LEFT, IN_BINDTYPE_PLAYER12, DKEY_LEFT },
+ { SDLK_RIGHT, IN_BINDTYPE_PLAYER12, DKEY_RIGHT },
+ { SDLK_d, IN_BINDTYPE_PLAYER12, DKEY_TRIANGLE },
+ { SDLK_z, IN_BINDTYPE_PLAYER12, DKEY_CROSS },
+ { SDLK_x, IN_BINDTYPE_PLAYER12, DKEY_CIRCLE },
+ { SDLK_s, IN_BINDTYPE_PLAYER12, DKEY_SQUARE },
+ { SDLK_v, IN_BINDTYPE_PLAYER12, DKEY_START },
+ { SDLK_c, IN_BINDTYPE_PLAYER12, DKEY_SELECT },
+ { SDLK_w, IN_BINDTYPE_PLAYER12, DKEY_L1 },
+ { SDLK_r, IN_BINDTYPE_PLAYER12, DKEY_R1 },
+ { SDLK_e, IN_BINDTYPE_PLAYER12, DKEY_L2 },
+ { SDLK_t, IN_BINDTYPE_PLAYER12, DKEY_R2 },
+ { SDLK_ESCAPE, IN_BINDTYPE_EMU, SACTION_ENTER_MENU },
+ { 0, 0, 0 }
};
static SDL_Surface *screen;
+static void *menubg_img;
static int change_video_mode(int w, int h)
{
@@ -78,6 +79,10 @@ void plat_init(void)
}
SDL_WM_SetCaption("PCSX-ReARMed " REV, NULL);
+ menubg_img = malloc(640 * 512 * 2);
+ if (menubg_img == NULL)
+ goto fail;
+
in_sdl_init(in_sdl_defbinds);
in_probe();
pl_rearmed_cbs.only_16bpp = 1;
@@ -90,6 +95,8 @@ fail:
void plat_finish(void)
{
+ free(menubg_img);
+ menubg_img = NULL;
SDL_Quit();
}
@@ -103,6 +110,7 @@ void *plat_gvideo_set_mode(int *w, int *h, int *bpp)
return screen->pixels;
}
+/* XXX: missing SDL_LockSurface() */
void *plat_gvideo_flip(void)
{
SDL_Flip(screen);
@@ -115,6 +123,10 @@ void plat_gvideo_close(void)
void plat_video_menu_enter(int is_rom_loaded)
{
+ /* surface will be lost, must adjust pl_vout_buf for menu bg */
+ memcpy(menubg_img, screen->pixels, screen->w * screen->h * 2);
+ pl_vout_buf = menubg_img;
+
change_video_mode(g_menuscreen_w, g_menuscreen_h);
}