mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-09-27 08:54:30 +00:00
Merge pull request #92 from aarojun/extended_GUI
Add sdlrender & sdl_vsync settings to Windows GUI config
This commit is contained in:
commit
ea3832423c
@ -975,30 +975,14 @@ static int dis_width, dis_height;
|
|||||||
// Hide/show graphics widgets
|
// Hide/show graphics widgets
|
||||||
static void hide_show_graphics_widgets(void)
|
static void hide_show_graphics_widgets(void)
|
||||||
{
|
{
|
||||||
switch (display_type) {
|
|
||||||
case DISPLAY_WINDOW:
|
|
||||||
gtk_widget_show(w_frameskip); gtk_widget_show(l_frameskip);
|
|
||||||
break;
|
|
||||||
case DISPLAY_SCREEN:
|
|
||||||
gtk_widget_hide(w_frameskip); gtk_widget_hide(l_frameskip);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// "Window" video type selected
|
// "Window" video type selected
|
||||||
static void mn_window(...)
|
static void mn_window(...) {display_type = DISPLAY_WINDOW;}
|
||||||
{
|
|
||||||
display_type = DISPLAY_WINDOW;
|
|
||||||
hide_show_graphics_widgets();
|
|
||||||
}
|
|
||||||
|
|
||||||
// "Fullscreen" video type selected
|
// "Fullscreen" video type selected
|
||||||
static void mn_fullscreen(...)
|
static void mn_fullscreen(...) {display_type = DISPLAY_SCREEN;}
|
||||||
{
|
|
||||||
display_type = DISPLAY_SCREEN;
|
|
||||||
hide_show_graphics_widgets();
|
|
||||||
PrefsReplaceInt32("frameskip", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// "5 Hz".."60Hz" selected
|
// "5 Hz".."60Hz" selected
|
||||||
static void mn_5hz(...) {PrefsReplaceInt32("frameskip", 12);}
|
static void mn_5hz(...) {PrefsReplaceInt32("frameskip", 12);}
|
||||||
@ -1030,6 +1014,33 @@ static void tb_nosound(GtkWidget *widget)
|
|||||||
set_graphics_sensitive();
|
set_graphics_sensitive();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SDL Graphics
|
||||||
|
#ifdef USE_SDL_VIDEO
|
||||||
|
// SDL Renderer Render Driver
|
||||||
|
enum {
|
||||||
|
RENDER_SOFTWARE = 0,
|
||||||
|
RENDER_OPENGL = 1,
|
||||||
|
RENDER_DIRECT3D = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
GtkWidget *w_render_driver;
|
||||||
|
GtkWidget *l_render_driver;
|
||||||
|
static int render_driver;
|
||||||
|
static int sdl_vsync;
|
||||||
|
|
||||||
|
// Render Driver selected
|
||||||
|
static void mn_sdl_software(...) {render_driver = RENDER_SOFTWARE;}
|
||||||
|
static void mn_sdl_opengl(...) {render_driver = RENDER_OPENGL;}
|
||||||
|
static void mn_sdl_direct3d(...) {render_driver = RENDER_DIRECT3D;}
|
||||||
|
|
||||||
|
// SDL Renderer Vertical Sync
|
||||||
|
static void tb_sdl_vsync(GtkWidget *widget)
|
||||||
|
{
|
||||||
|
PrefsReplaceBool("sdl_vsync", GTK_TOGGLE_BUTTON(widget)->active);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Read graphics preferences
|
// Read graphics preferences
|
||||||
static void parse_graphics_prefs(void)
|
static void parse_graphics_prefs(void)
|
||||||
{
|
{
|
||||||
@ -1049,6 +1060,40 @@ static void parse_graphics_prefs(void)
|
|||||||
else if (sscanf(str, "dga/%d/%d", &dis_width, &dis_height) == 2)
|
else if (sscanf(str, "dga/%d/%d", &dis_width, &dis_height) == 2)
|
||||||
display_type = DISPLAY_SCREEN;
|
display_type = DISPLAY_SCREEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_SDL_VIDEO
|
||||||
|
render_driver = RENDER_SOFTWARE;
|
||||||
|
|
||||||
|
const char *drv = PrefsFindString("sdlrender");
|
||||||
|
if (drv && drv[0]) {
|
||||||
|
if (strcmp(drv, "software") == 0)
|
||||||
|
render_driver = RENDER_SOFTWARE;
|
||||||
|
else if (strcmp(drv, "opengl") == 0)
|
||||||
|
render_driver = RENDER_OPENGL;
|
||||||
|
else if (strcmp(drv, "direct3d") == 0)
|
||||||
|
render_driver = RENDER_DIRECT3D;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
static void read_SDL_graphics_settings(void)
|
||||||
|
{
|
||||||
|
const char *rpref;
|
||||||
|
switch (render_driver) {
|
||||||
|
case RENDER_SOFTWARE:
|
||||||
|
rpref = "software";
|
||||||
|
break;
|
||||||
|
case RENDER_OPENGL:
|
||||||
|
rpref = "opengl";
|
||||||
|
break;
|
||||||
|
case RENDER_DIRECT3D:
|
||||||
|
rpref = "direct3d";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
PrefsRemoveItem("sdlrender");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PrefsReplaceString("sdlrender", rpref);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read settings from widgets and set preferences
|
// Read settings from widgets and set preferences
|
||||||
@ -1075,6 +1120,10 @@ static void read_graphics_settings(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PrefsReplaceString("screen", pref);
|
PrefsReplaceString("screen", pref);
|
||||||
|
|
||||||
|
#ifdef USE_SDL_VIDEO
|
||||||
|
read_SDL_graphics_settings();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create "Graphics/Sound" pane
|
// Create "Graphics/Sound" pane
|
||||||
@ -1184,6 +1233,39 @@ static void create_graphics_pane(GtkWidget *top)
|
|||||||
make_checkbox(box, STR_GFXACCEL_CTRL, "gfxaccel", GTK_SIGNAL_FUNC(tb_gfxaccel));
|
make_checkbox(box, STR_GFXACCEL_CTRL, "gfxaccel", GTK_SIGNAL_FUNC(tb_gfxaccel));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_SDL_VIDEO
|
||||||
|
make_separator(box);
|
||||||
|
|
||||||
|
table = make_table(box, 2, 5);
|
||||||
|
|
||||||
|
l_render_driver = gtk_label_new(GetString(STR_GRAPHICS_SDL_RENDER_DRIVER_CTRL));
|
||||||
|
gtk_widget_show(l_render_driver);
|
||||||
|
gtk_table_attach(GTK_TABLE(table), l_render_driver, 0, 1, 0, 1, (GtkAttachOptions)0, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
|
w_render_driver = gtk_option_menu_new();
|
||||||
|
gtk_widget_show(w_render_driver);
|
||||||
|
menu = gtk_menu_new();
|
||||||
|
|
||||||
|
add_menu_item(menu, STR_SOFTWARE_LAB, GTK_SIGNAL_FUNC(mn_sdl_software));
|
||||||
|
add_menu_item(menu, STR_OPENGL_LAB, GTK_SIGNAL_FUNC(mn_sdl_opengl));
|
||||||
|
add_menu_item(menu, STR_DIRECT3D_LAB, GTK_SIGNAL_FUNC(mn_sdl_direct3d));
|
||||||
|
switch (render_driver) {
|
||||||
|
case RENDER_SOFTWARE:
|
||||||
|
gtk_menu_set_active(GTK_MENU(menu), 0);
|
||||||
|
break;
|
||||||
|
case RENDER_OPENGL:
|
||||||
|
gtk_menu_set_active(GTK_MENU(menu), 1);
|
||||||
|
break;
|
||||||
|
case RENDER_DIRECT3D:
|
||||||
|
gtk_menu_set_active(GTK_MENU(menu), 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
gtk_option_menu_set_menu(GTK_OPTION_MENU(w_render_driver), menu);
|
||||||
|
gtk_table_attach(GTK_TABLE(table), w_render_driver, 1, 2, 0, 1, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
||||||
|
|
||||||
|
opt = make_checkbox(box, STR_GRAPHICS_SDL_VSYNC_CTRL, "sdl_vsync", GTK_SIGNAL_FUNC(tb_sdl_vsync));
|
||||||
|
#endif
|
||||||
|
|
||||||
make_separator(box);
|
make_separator(box);
|
||||||
make_checkbox(box, STR_NOSOUND_CTRL, "nosound", GTK_SIGNAL_FUNC(tb_nosound));
|
make_checkbox(box, STR_NOSOUND_CTRL, "nosound", GTK_SIGNAL_FUNC(tb_nosound));
|
||||||
|
|
||||||
|
@ -162,6 +162,12 @@ enum {
|
|||||||
STR_24_BIT_1600x1200_LAB,
|
STR_24_BIT_1600x1200_LAB,
|
||||||
STR_SOUND_CTRL,
|
STR_SOUND_CTRL,
|
||||||
STR_NOSOUND_CTRL,
|
STR_NOSOUND_CTRL,
|
||||||
|
STR_GRAPHICS_SDL_RENDER_DRIVER_CTRL,
|
||||||
|
STR_SOFTWARE_LAB,
|
||||||
|
STR_OPENGL_LAB,
|
||||||
|
STR_DIRECT3D_LAB,
|
||||||
|
STR_GRAPHICS_SDL_VSYNC_CTRL,
|
||||||
|
STR_DEFAULT_LAB,
|
||||||
|
|
||||||
STR_SERIAL_NETWORK_PANE_TITLE = 3500, // Serial/Networking pane
|
STR_SERIAL_NETWORK_PANE_TITLE = 3500, // Serial/Networking pane
|
||||||
STR_SERIALA_CTRL,
|
STR_SERIALA_CTRL,
|
||||||
|
@ -177,6 +177,12 @@ user_string_def common_strings[] = {
|
|||||||
{STR_24_BIT_1600x1200_LAB, "1600x1200, 24 Bit"},
|
{STR_24_BIT_1600x1200_LAB, "1600x1200, 24 Bit"},
|
||||||
{STR_SOUND_CTRL, "Sound"},
|
{STR_SOUND_CTRL, "Sound"},
|
||||||
{STR_NOSOUND_CTRL, "Disable Sound Output"},
|
{STR_NOSOUND_CTRL, "Disable Sound Output"},
|
||||||
|
{STR_GRAPHICS_SDL_RENDER_DRIVER_CTRL, "Render Driver"},
|
||||||
|
{STR_SOFTWARE_LAB, "Software"},
|
||||||
|
{STR_OPENGL_LAB, "OpenGL"},
|
||||||
|
{STR_DIRECT3D_LAB, "Direct3D"},
|
||||||
|
{STR_GRAPHICS_SDL_VSYNC_CTRL, "Vertical Sync (Software)"},
|
||||||
|
{STR_DEFAULT_LAB, "Default"},
|
||||||
|
|
||||||
{STR_SERIAL_NETWORK_PANE_TITLE, "Serial/Network"},
|
{STR_SERIAL_NETWORK_PANE_TITLE, "Serial/Network"},
|
||||||
{STR_SERIALA_CTRL, "Modem Port"},
|
{STR_SERIALA_CTRL, "Modem Port"},
|
||||||
|
@ -132,6 +132,12 @@ enum {
|
|||||||
STR_SIZE_1024_LAB,
|
STR_SIZE_1024_LAB,
|
||||||
STR_SIZE_MAX_LAB,
|
STR_SIZE_MAX_LAB,
|
||||||
STR_NOSOUND_CTRL,
|
STR_NOSOUND_CTRL,
|
||||||
|
STR_GRAPHICS_SDL_RENDER_DRIVER_CTRL,
|
||||||
|
STR_SOFTWARE_LAB,
|
||||||
|
STR_OPENGL_LAB,
|
||||||
|
STR_DIRECT3D_LAB,
|
||||||
|
STR_GRAPHICS_SDL_VSYNC_CTRL,
|
||||||
|
STR_DEFAULT_LAB,
|
||||||
|
|
||||||
// Serial/Network pane
|
// Serial/Network pane
|
||||||
STR_SERIAL_NETWORK_PANE_TITLE = 3400,
|
STR_SERIAL_NETWORK_PANE_TITLE = 3400,
|
||||||
|
@ -142,6 +142,12 @@ user_string_def common_strings[] = {
|
|||||||
{STR_SIZE_1024_LAB, "1024"},
|
{STR_SIZE_1024_LAB, "1024"},
|
||||||
{STR_SIZE_MAX_LAB, "Maximum"},
|
{STR_SIZE_MAX_LAB, "Maximum"},
|
||||||
{STR_NOSOUND_CTRL, "Disable Sound Output"},
|
{STR_NOSOUND_CTRL, "Disable Sound Output"},
|
||||||
|
{STR_GRAPHICS_SDL_RENDER_DRIVER_CTRL, "Render Driver"},
|
||||||
|
{STR_SOFTWARE_LAB, "Software"},
|
||||||
|
{STR_OPENGL_LAB, "OpenGL"},
|
||||||
|
{STR_DIRECT3D_LAB, "Direct3D"},
|
||||||
|
{STR_GRAPHICS_SDL_VSYNC_CTRL, "Vertical Sync (Software)"},
|
||||||
|
{STR_DEFAULT_LAB, "Default"},
|
||||||
|
|
||||||
{STR_SERIAL_NETWORK_PANE_TITLE, "Serial/Network"},
|
{STR_SERIAL_NETWORK_PANE_TITLE, "Serial/Network"},
|
||||||
{STR_SERPORTA_CTRL, "Modem Port"},
|
{STR_SERPORTA_CTRL, "Modem Port"},
|
||||||
|
Loading…
Reference in New Issue
Block a user