mirror of
https://github.com/libretro/snes9x.git
synced 2025-02-23 10:40:50 +00:00
Gtk: Convert driver setting to a string.
This commit is contained in:
parent
6433b8f689
commit
109fedf42c
@ -82,7 +82,7 @@ int Snes9xConfig::load_defaults()
|
|||||||
rom_loaded = false;
|
rom_loaded = false;
|
||||||
multithreading = false;
|
multithreading = false;
|
||||||
splash_image = SPLASH_IMAGE_STARFIELD;
|
splash_image = SPLASH_IMAGE_STARFIELD;
|
||||||
hw_accel = 0;
|
display_driver = "OpenGL";
|
||||||
allow_opengl = false;
|
allow_opengl = false;
|
||||||
allow_xv = false;
|
allow_xv = false;
|
||||||
allow_xrandr = false;
|
allow_xrandr = false;
|
||||||
@ -227,7 +227,7 @@ int Snes9xConfig::save_config_file()
|
|||||||
outint("ScanlineFilterIntensity", scanline_filter_intensity, "0: 0%, 1: 12.5%, 2: 25%, 3: 50%, 4: 100%");
|
outint("ScanlineFilterIntensity", scanline_filter_intensity, "0: 0%, 1: 12.5%, 2: 25%, 3: 50%, 4: 100%");
|
||||||
outint("HiresEffect", hires_effect, "0: Downscale to low-res, 1: Leave as-is, 2: Upscale low-res screens");
|
outint("HiresEffect", hires_effect, "0: Downscale to low-res, 1: Leave as-is, 2: Upscale low-res screens");
|
||||||
outint("NumberOfThreads", num_threads);
|
outint("NumberOfThreads", num_threads);
|
||||||
outint("HardwareAcceleration", hw_accel, "0: None, 1: OpenGL, 2: XVideo");
|
outstring("HardwareAcceleration", display_driver, "None, OpenGL, Xv, Vulkan");
|
||||||
outint("SplashBackground", splash_image, "0: Black, 1: Color bars, 2: Pattern, 3: Blue, 4: Default");
|
outint("SplashBackground", splash_image, "0: Black, 1: Color bars, 2: Pattern, 3: Blue, 4: Default");
|
||||||
|
|
||||||
section = "NTSC";
|
section = "NTSC";
|
||||||
@ -453,7 +453,7 @@ int Snes9xConfig::load_config_file()
|
|||||||
inbool("ForceInvertedByteOrder", force_inverted_byte_order);
|
inbool("ForceInvertedByteOrder", force_inverted_byte_order);
|
||||||
inbool("Multithreading", multithreading);
|
inbool("Multithreading", multithreading);
|
||||||
inint("NumberOfThreads", num_threads);
|
inint("NumberOfThreads", num_threads);
|
||||||
inint("HardwareAcceleration", hw_accel);
|
instr("HardwareAcceleration", display_driver);
|
||||||
inbool("BilinearFilter", Settings.BilinearFilter);
|
inbool("BilinearFilter", Settings.BilinearFilter);
|
||||||
inint("SplashBackground", splash_image);
|
inint("SplashBackground", splash_image);
|
||||||
|
|
||||||
|
@ -15,12 +15,6 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
enum {
|
|
||||||
HWA_NONE = 0,
|
|
||||||
HWA_OPENGL = 1,
|
|
||||||
HWA_XV = 2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
HIRES_MERGE = 0,
|
HIRES_MERGE = 0,
|
||||||
HIRES_NORMAL = 1,
|
HIRES_NORMAL = 1,
|
||||||
@ -92,7 +86,7 @@ class Snes9xConfig
|
|||||||
float ntsc_merge_fields;
|
float ntsc_merge_fields;
|
||||||
int ntsc_scanline_intensity;
|
int ntsc_scanline_intensity;
|
||||||
int scanline_filter_intensity;
|
int scanline_filter_intensity;
|
||||||
int hw_accel;
|
std::string display_driver;
|
||||||
bool allow_opengl;
|
bool allow_opengl;
|
||||||
bool allow_xv;
|
bool allow_xv;
|
||||||
bool allow_xrandr;
|
bool allow_xrandr;
|
||||||
@ -125,6 +119,7 @@ class Snes9xConfig
|
|||||||
|
|
||||||
/* Operational */
|
/* Operational */
|
||||||
std::vector<std::string> sound_drivers;
|
std::vector<std::string> sound_drivers;
|
||||||
|
std::vector<std::string> display_drivers;
|
||||||
int sound_driver;
|
int sound_driver;
|
||||||
bool mute_sound;
|
bool mute_sound;
|
||||||
bool mute_sound_turbo;
|
bool mute_sound_turbo;
|
||||||
|
@ -798,6 +798,14 @@ void S9xQueryDrivers()
|
|||||||
gui_config->xrr_screen_resources->crtcs[0]);
|
gui_config->xrr_screen_resources->crtcs[0]);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
auto &dd = gui_config->display_drivers;
|
||||||
|
dd.clear();
|
||||||
|
dd.push_back("None");
|
||||||
|
if (gui_config->allow_opengl)
|
||||||
|
dd.push_back("OpenGL");
|
||||||
|
if (gui_config->allow_xv)
|
||||||
|
dd.push_back("Xv");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 S9xDeinitUpdate(int width, int height)
|
bool8 S9xDeinitUpdate(int width, int height)
|
||||||
@ -887,40 +895,30 @@ static void S9xInitDriver()
|
|||||||
#ifdef GDK_WINDOWING_WAYLAND
|
#ifdef GDK_WINDOWING_WAYLAND
|
||||||
if (GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default()))
|
if (GDK_IS_WAYLAND_DISPLAY(gdk_display_get_default()))
|
||||||
{
|
{
|
||||||
gui_config->hw_accel = HWA_OPENGL;
|
gui_config->display_driver = "OpenGL";
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
switch (gui_config->hw_accel)
|
if ("OpenGL" == gui_config->display_driver)
|
||||||
{
|
{
|
||||||
case HWA_OPENGL:
|
|
||||||
driver = new S9xOpenGLDisplayDriver(top_level, gui_config);
|
driver = new S9xOpenGLDisplayDriver(top_level, gui_config);
|
||||||
break;
|
}
|
||||||
|
|
||||||
#if defined(USE_XV) && defined(GDK_WINDOWING_X11)
|
#if defined(USE_XV) && defined(GDK_WINDOWING_X11)
|
||||||
case HWA_XV:
|
else if ("Xv" == gui_config->display_driver)
|
||||||
|
{
|
||||||
driver = new S9xXVDisplayDriver(top_level, gui_config);
|
driver = new S9xXVDisplayDriver(top_level, gui_config);
|
||||||
break;
|
}
|
||||||
#endif
|
#endif
|
||||||
|
else
|
||||||
default:
|
{
|
||||||
driver = new S9xGTKDisplayDriver(top_level, gui_config);
|
driver = new S9xGTKDisplayDriver(top_level, gui_config);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (driver->init())
|
if (driver->init())
|
||||||
{
|
{
|
||||||
if (gui_config->hw_accel > 0)
|
delete driver;
|
||||||
{
|
gui_config->display_driver = "None";
|
||||||
delete driver;
|
driver->init();
|
||||||
gui_config->hw_accel = HWA_NONE;
|
|
||||||
|
|
||||||
S9xInitDriver();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Error: Couldn't initialize any display output.\n");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pool = NULL;
|
pool = NULL;
|
||||||
|
@ -589,9 +589,6 @@ int S9xOpenGLDisplayDriver::query_availability()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (gui_config->hw_accel == HWA_OPENGL)
|
|
||||||
gui_config->hw_accel = HWA_NONE;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,15 +138,18 @@ Snes9xPreferences::Snes9xPreferences(Snes9xConfig *config)
|
|||||||
combo_box_append("scale_method_combo", _("4xBRZ"));
|
combo_box_append("scale_method_combo", _("4xBRZ"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
combo_box_append("hw_accel", _("None - Use software scaler"));
|
for (const auto &driver : config->display_drivers)
|
||||||
|
{
|
||||||
|
std::string entry;
|
||||||
|
if (!strcasecmp(driver.c_str(), "opengl"))
|
||||||
|
entry = _("OpenGL - Use 3D graphics hardware");
|
||||||
|
else if (!strcasecmp(driver.c_str(), "Xv"))
|
||||||
|
entry = _("XVideo - Use hardware video blitter");
|
||||||
|
else
|
||||||
|
entry = _("None - Use software scaler");
|
||||||
|
|
||||||
if (config->allow_opengl)
|
combo_box_append("hw_accel", entry.c_str());
|
||||||
combo_box_append("hw_accel",
|
}
|
||||||
_("OpenGL - Use 3D graphics hardware"));
|
|
||||||
|
|
||||||
if (config->allow_xv)
|
|
||||||
combo_box_append("hw_accel",
|
|
||||||
_("XVideo - Use hardware video blitter"));
|
|
||||||
|
|
||||||
for (auto &name : config->sound_drivers)
|
for (auto &name : config->sound_drivers)
|
||||||
{
|
{
|
||||||
@ -173,9 +176,9 @@ void Snes9xPreferences::connect_signals()
|
|||||||
|
|
||||||
get_object<Gtk::ComboBox>("hw_accel")->signal_changed().connect([&] {
|
get_object<Gtk::ComboBox>("hw_accel")->signal_changed().connect([&] {
|
||||||
int id = get_combo("hw_accel");
|
int id = get_combo("hw_accel");
|
||||||
show_widget("bilinear_filter", id != HWA_XV);
|
show_widget("bilinear_filter", config->display_drivers[id] != "Xv");
|
||||||
show_widget("opengl_frame", id == HWA_OPENGL);
|
show_widget("opengl_frame", config->display_drivers[id] == "OpenGL");
|
||||||
show_widget("xv_frame", id == HWA_XV);
|
show_widget("xv_frame", config->display_drivers[id] == "Xv");
|
||||||
});
|
});
|
||||||
|
|
||||||
get_object<Gtk::Button>("reset_current_joypad")->signal_pressed().connect(sigc::mem_fun(*this, &Snes9xPreferences::reset_current_joypad));
|
get_object<Gtk::Button>("reset_current_joypad")->signal_pressed().connect(sigc::mem_fun(*this, &Snes9xPreferences::reset_current_joypad));
|
||||||
@ -425,7 +428,7 @@ void Snes9xPreferences::move_settings_to_dialog()
|
|||||||
set_check("prevent_screensaver", config->prevent_screensaver);
|
set_check("prevent_screensaver", config->prevent_screensaver);
|
||||||
set_check("force_inverted_byte_order", config->force_inverted_byte_order);
|
set_check("force_inverted_byte_order", config->force_inverted_byte_order);
|
||||||
set_combo("playback_combo", 7 - config->sound_playback_rate);
|
set_combo("playback_combo", 7 - config->sound_playback_rate);
|
||||||
set_combo("hw_accel", combo_value (config->hw_accel));
|
set_combo("hw_accel", combo_value (config->display_driver));
|
||||||
set_check("pause_emulation_on_switch", config->pause_emulation_on_switch);
|
set_check("pause_emulation_on_switch", config->pause_emulation_on_switch);
|
||||||
set_spin ("num_threads", config->num_threads);
|
set_spin ("num_threads", config->num_threads);
|
||||||
set_check("mute_sound_check", config->mute_sound);
|
set_check("mute_sound_check", config->mute_sound);
|
||||||
@ -545,7 +548,7 @@ void Snes9xPreferences::get_settings_from_dialog()
|
|||||||
if (config->multithreading != get_check("multithreading"))
|
if (config->multithreading != get_check("multithreading"))
|
||||||
gfx_needs_restart = true;
|
gfx_needs_restart = true;
|
||||||
|
|
||||||
if (config->hw_accel != hw_accel_value (get_combo("hw_accel")))
|
if (config->display_driver != config->display_drivers[get_combo("hw_accel")])
|
||||||
gfx_needs_restart = true;
|
gfx_needs_restart = true;
|
||||||
|
|
||||||
if (config->force_inverted_byte_order != get_check("force_inverted_byte_order"))
|
if (config->force_inverted_byte_order != get_check("force_inverted_byte_order"))
|
||||||
@ -586,7 +589,7 @@ void Snes9xPreferences::get_settings_from_dialog()
|
|||||||
store_ntsc_settings();
|
store_ntsc_settings();
|
||||||
config->ntsc_scanline_intensity = get_combo("ntsc_scanline_intensity");
|
config->ntsc_scanline_intensity = get_combo("ntsc_scanline_intensity");
|
||||||
config->scanline_filter_intensity = get_combo("scanline_filter_intensity");
|
config->scanline_filter_intensity = get_combo("scanline_filter_intensity");
|
||||||
config->hw_accel = hw_accel_value(get_combo("hw_accel"));
|
config->display_driver = config->display_drivers[get_combo("hw_accel")];
|
||||||
Settings.BilinearFilter = get_check("bilinear_filter");
|
Settings.BilinearFilter = get_check("bilinear_filter");
|
||||||
config->num_threads = get_spin("num_threads");
|
config->num_threads = get_spin("num_threads");
|
||||||
config->default_esc_behavior = get_combo("default_esc_behavior");
|
config->default_esc_behavior = get_combo("default_esc_behavior");
|
||||||
@ -715,28 +718,15 @@ void Snes9xPreferences::get_settings_from_dialog()
|
|||||||
top_level->leave_fullscreen_mode();
|
top_level->leave_fullscreen_mode();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Snes9xPreferences::hw_accel_value(int combo_value)
|
int Snes9xPreferences::combo_value(std::string driver_name)
|
||||||
{
|
{
|
||||||
if (config->allow_opengl && config->allow_xv)
|
for (size_t i = 0; i < config->display_drivers.size(); i++)
|
||||||
return combo_value;
|
{
|
||||||
else if (!config->allow_opengl && !config->allow_xv)
|
if (config->display_drivers[i] == driver_name)
|
||||||
return 0;
|
return i;
|
||||||
else if (!config->allow_opengl && config->allow_xv)
|
}
|
||||||
return combo_value ? 2 : 0;
|
|
||||||
else
|
|
||||||
return combo_value ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Snes9xPreferences::combo_value(int hw_accel)
|
return 0;
|
||||||
{
|
|
||||||
if (config->allow_opengl && config->allow_xv)
|
|
||||||
return hw_accel;
|
|
||||||
else if (!config->allow_opengl && !config->allow_xv)
|
|
||||||
return 0;
|
|
||||||
else if (!config->allow_opengl && config->allow_xv)
|
|
||||||
return hw_accel == HWA_XV ? 1 : 0;
|
|
||||||
else
|
|
||||||
return hw_accel == HWA_OPENGL ? 1 : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Snes9xPreferences::show()
|
void Snes9xPreferences::show()
|
||||||
|
@ -24,7 +24,7 @@ class Snes9xPreferences : public GtkBuilderWindow
|
|||||||
int get_focused_binding();
|
int get_focused_binding();
|
||||||
void store_binding(const char *string, Binding binding);
|
void store_binding(const char *string, Binding binding);
|
||||||
int hw_accel_value(int combo_value);
|
int hw_accel_value(int combo_value);
|
||||||
int combo_value(int hw_accel);
|
int combo_value(std::string driver_name);
|
||||||
void focus_next();
|
void focus_next();
|
||||||
void swap_with();
|
void swap_with();
|
||||||
void clear_binding(const char *name);
|
void clear_binding(const char *name);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user