Font handling and stuff.

This commit is contained in:
Themaister 2011-03-29 18:28:31 +02:00
parent 1706763a4c
commit caf87b1198
3 changed files with 59 additions and 0 deletions

View File

@ -221,6 +221,8 @@ static const struct snes_keybind snes_keybinds_1[] = {
{ SSNES_MOVIE_RECORD_TOGGLE, SDLK_o, NO_BTN, AXIS_NONE },
{ SSNES_PAUSE_TOGGLE, SDLK_p, NO_BTN, AXIS_NONE },
{ SSNES_RESET, SDLK_h, NO_BTN, AXIS_NONE },
{ SSNES_SHADER_NEXT, SDLK_m, NO_BTN, AXIS_NONE },
{ SSNES_SHADER_PREV, SDLK_n, NO_BTN, AXIS_NONE },
{ -1 }
};

View File

@ -1049,6 +1049,13 @@ static bool gl_focus(void *data)
return (SDL_GetAppState() & (SDL_APPINPUTFOCUS | SDL_APPACTIVE)) == (SDL_APPINPUTFOCUS | SDL_APPACTIVE);
}
static bool gl_xml_shader(void *data, const char *path)
{
(void)data;
(void)path;
return true;
}
const video_driver_t video_gl = {
.init = gl_init,
.frame = gl_frame,
@ -1056,6 +1063,7 @@ const video_driver_t video_gl = {
.set_nonblock_state = gl_set_nonblock_state,
.focus = gl_focus,
.free = gl_free,
.xml_shader = gl_xml_shader,
.ident = "gl"
};

49
ssnes.c
View File

@ -1158,6 +1158,51 @@ static void check_reset(void)
}
}
#ifdef HAVE_XML
static void check_shader_dir(void)
{
static bool old_pressed_next = false;
static bool old_pressed_prev = true;
if (!g_extern.shader_dir.elems || !driver.video->xml_shader)
return;
bool should_apply = false;
bool pressed_next = driver.input->key_pressed(driver.input_data, SSNES_SHADER_NEXT);
bool pressed_prev = driver.input->key_pressed(driver.input_data, SSNES_SHADER_PREV);
if (pressed_next && !old_pressed_next)
{
should_apply = true;
g_extern.shader_dir.ptr = (g_extern.shader_dir.ptr + 1) % g_extern.shader_dir.size;
}
else if (pressed_prev && !old_pressed_prev)
{
should_apply = true;
if (g_extern.shader_dir.ptr == 0)
g_extern.shader_dir.ptr = g_extern.shader_dir.size - 1;
else
g_extern.shader_dir.ptr--;
}
if (should_apply)
{
const char *shader = g_extern.shader_dir.elems[g_extern.shader_dir.ptr];
msg_queue_clear(g_extern.msg_queue);
char msg[512];
snprintf(msg, sizeof(msg), "XML shader #%u: \"%s\"", (unsigned)g_extern.shader_dir.ptr, shader);
msg_queue_push(g_extern.msg_queue, msg, 1, 120);
SSNES_LOG("Applying shader \"%s\"\n", shader);
if (!driver.video->xml_shader(driver.video_data, shader))
SSNES_WARN("Failed to apply shader!\n");
}
old_pressed_next = pressed_next;
old_pressed_prev = pressed_prev;
}
#endif
static void do_state_checks(void)
{
if (!g_extern.netplay)
@ -1178,6 +1223,10 @@ static void do_state_checks(void)
if (!g_extern.bsv_movie_playback)
check_movie_record();
#ifdef HAVE_XML
check_shader_dir();
#endif
}
check_fullscreen();