From 1cae4de65342c5237f5b9408230142646ae694f6 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 5 Jan 2013 06:02:02 +0100 Subject: [PATCH] (Android) More elegant way of setting refresh rate --- android/native/jni/android_general.h | 1 - android/native/jni/main.c | 24 ------------------- android/phoenix/res/xml/prefs.xml | 19 +++++++++------ .../src/org/retroarch/browser/RetroArch.java | 18 ++++++++++---- driver.c | 2 ++ 5 files changed, 28 insertions(+), 36 deletions(-) diff --git a/android/native/jni/android_general.h b/android/native/jni/android_general.h index bd776744af..a25cf93d80 100644 --- a/android/native/jni/android_general.h +++ b/android/native/jni/android_general.h @@ -24,7 +24,6 @@ struct droid { struct android_app* app; bool window_ready; - float disp_refresh_rate; char current_ime[PATH_MAX]; }; diff --git a/android/native/jni/main.c b/android/native/jni/main.c index 4ed40fc5c2..8bd294d724 100644 --- a/android/native/jni/main.c +++ b/android/native/jni/main.c @@ -242,8 +242,6 @@ static void jni_get(struct jni_params *in_params, struct jni_out_params_char *ou } } -static float refreshrate; - static int android_app_set_argv(char** argv) { char rom_path[PATH_MAX]; @@ -275,14 +273,6 @@ static int android_app_set_argv(char** argv) strlcpy(out_args.in, "LIBRETRO", sizeof(out_args.in)); jni_get(&in_params, &out_args); - // Refresh rate - char refreshrate_char[128]; - out_args.out = refreshrate_char; - out_args.out_sizeof = sizeof(refreshrate_char); - strlcpy(out_args.in, "REFRESHRATE", sizeof(out_args.in)); - jni_get(&in_params, &out_args); - refreshrate = (float)strtod(refreshrate_char, NULL); - // Config file out_args.out = config_file; out_args.out_sizeof = sizeof(config_file); @@ -301,7 +291,6 @@ static int android_app_set_argv(char** argv) RARCH_LOG("Checking arguments passed ...\n"); RARCH_LOG("ROM Filename: [%s].\n", rom_path); RARCH_LOG("Libretro path: [%s].\n", libretro_path); - RARCH_LOG("Display Refresh rate: %.2f Hz.\n", refreshrate); RARCH_LOG("Config file: [%s].\n", config_file); RARCH_LOG("Current IME: [%s].\n", g_android.current_ime); @@ -351,18 +340,6 @@ static void* android_app_entry(void* param) g_extern.verbose = true; - bool disp_refresh_read = refreshrate > 0.0f; - g_android.disp_refresh_rate = refresh_rate; - if (disp_refresh_read) - { - if (refreshrate < refresh_rate) - { - RARCH_WARN("Display refresh rate of your device is likely lower than 60Hz.\n"); - g_android.disp_refresh_rate = refreshrate; - } - } - - RARCH_LOG("Setting RetroArch video refresh rate to: %.2fHz.\n", g_android.disp_refresh_rate); while (!g_android.window_ready) { @@ -379,7 +356,6 @@ static void* android_app_entry(void* param) { RARCH_LOG("RetroArch started.\n"); rarch_init_msg_queue(); - driver_set_monitor_refresh_rate(g_android.disp_refresh_rate); while ((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? android_run_events(g_android.app) : diff --git a/android/phoenix/res/xml/prefs.xml b/android/phoenix/res/xml/prefs.xml index dd2f8fdb61..aa3773790a 100644 --- a/android/phoenix/res/xml/prefs.xml +++ b/android/phoenix/res/xml/prefs.xml @@ -20,16 +20,16 @@ - + + + android:summary="Use Bilinear filtering on FBO texture on second pass." + android:title="Second pass Bilinear Filtering" /> diff --git a/android/phoenix/src/org/retroarch/browser/RetroArch.java b/android/phoenix/src/org/retroarch/browser/RetroArch.java index 060ee68ba0..b1f550f648 100644 --- a/android/phoenix/src/org/retroarch/browser/RetroArch.java +++ b/android/phoenix/src/org/retroarch/browser/RetroArch.java @@ -52,10 +52,10 @@ public class RetroArch extends Activity implements static private final String TAG = "RetroArch-Phoenix"; private ConfigFile config; - public float getRefreshRate() { + private final double getRefreshRate() { final WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); final Display display = wm.getDefaultDisplay(); - float rate = display.getRefreshRate(); + double rate = display.getRefreshRate(); return rate; } @@ -199,6 +199,18 @@ public class RetroArch extends Activity implements config.setBoolean("video_vsync", prefs.getBoolean("video_vsync", true)); config.setBoolean("input_autodetect_enable", prefs.getBoolean("input_autodetect_enable", true)); + if (prefs.getBoolean("video_sync_refreshrate_to_screen", true) && + (getRefreshRate() < 59.95)) + { + Log.e(TAG, "Refresh rate of screen lower than 59.95Hz, adjusting to screen."); + config.setDouble("video_refresh_rate", getRefreshRate()); + } + else + { + Log.e(TAG, "Refresh rate set to 59.95Hz (default)."); + config.setDouble("video_refresh_rate", 59.95); + } + String aspect = prefs.getString("video_aspect_ratio", "auto"); if (aspect.equals("full")) { config.setBoolean("video_force_aspect", false); @@ -266,8 +278,6 @@ public class RetroArch extends Activity implements myIntent = new Intent(this, NativeActivity.class); myIntent.putExtra("ROM", data.getStringExtra("PATH")); myIntent.putExtra("LIBRETRO", libretro_path); - myIntent.putExtra("REFRESHRATE", - Float.toString(getRefreshRate())); myIntent.putExtra("CONFIGFILE", getDefaultConfigPath()); myIntent.putExtra("IME", current_ime); startActivity(myIntent); diff --git a/driver.c b/driver.c index 4153fe7711..98afab31bb 100644 --- a/driver.c +++ b/driver.c @@ -245,12 +245,14 @@ static void adjust_system_rates(void) void driver_set_monitor_refresh_rate(float hz) { + RARCH_LOG("Setting refresh rate to: %.2fHz.\n", hz); g_settings.video.refresh_rate = hz; adjust_system_rates(); g_extern.audio_data.orig_src_ratio = g_extern.audio_data.src_ratio = (double)g_settings.audio.out_rate / g_settings.audio.in_rate; + } void init_drivers(void)