Find drivers before snes_init() to allow rotation to work properly.

This commit is contained in:
Themaister 2012-04-01 19:38:50 +02:00
parent 34bdea0f1c
commit 2178a14952
4 changed files with 14 additions and 6 deletions

View File

@ -178,6 +178,13 @@ static void find_input_driver(void)
ssnes_fail(1, "find_input_driver()");
}
void init_drivers_pre(void)
{
find_audio_driver();
find_video_driver();
find_input_driver();
}
void init_drivers(void)
{
init_video_input();
@ -309,7 +316,6 @@ void init_audio(void)
}
adjust_audio_input_rate();
find_audio_driver();
driver.audio_data = audio_init_func(*g_settings.audio.device ? g_settings.audio.device : NULL,
g_settings.audio.out_rate, g_settings.audio.latency);
@ -506,9 +512,6 @@ void init_video_input(void)
unsigned scale = max_dim / SSNES_SCALE_BASE;
scale = max(scale, 1);
find_video_driver();
find_input_driver();
if (g_extern.filter.active)
scale = g_extern.filter.scale;

View File

@ -170,6 +170,7 @@ typedef struct driver
} driver_t;
void init_drivers(void);
void init_drivers_pre(void);
void uninit_drivers(void);
void init_video_input(void);

View File

@ -426,8 +426,11 @@ static bool environment_cb(unsigned cmd, void *data)
g_extern.system.rotation = rotation;
if (driver.video && driver.video_data && driver.video->set_rotation)
video_set_rotation_func(rotation);
if (driver.video && driver.video->set_rotation)
{
if (driver.video_data)
video_set_rotation_func(rotation);
}
else
return false;
break;

View File

@ -2287,6 +2287,7 @@ int ssnes_main_init(int argc, char *argv[])
config_load();
init_libsnes_sym();
fill_title_buf();
init_drivers_pre();
psnes_init();
if (*g_extern.basename)