From 2178a1495222dbad147f54b9b50b2378227c7b53 Mon Sep 17 00:00:00 2001 From: Themaister Date: Sun, 1 Apr 2012 19:38:50 +0200 Subject: [PATCH] Find drivers before snes_init() to allow rotation to work properly. --- driver.c | 11 +++++++---- driver.h | 1 + dynamic.c | 7 +++++-- ssnes.c | 1 + 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/driver.c b/driver.c index 87681e87d9..688d0a87f8 100644 --- a/driver.c +++ b/driver.c @@ -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; diff --git a/driver.h b/driver.h index 56812de5d8..f28f59058d 100644 --- a/driver.h +++ b/driver.h @@ -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); diff --git a/dynamic.c b/dynamic.c index 1c68aade86..338d83adda 100644 --- a/dynamic.c +++ b/dynamic.c @@ -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; diff --git a/ssnes.c b/ssnes.c index 35cef1d181..d047fde61f 100644 --- a/ssnes.c +++ b/ssnes.c @@ -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)