mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-06-08 09:29:31 +00:00
Merge SDL UI changes from windows
This commit is contained in:
parent
d715aa8328
commit
8959de5899
|
@ -790,15 +790,13 @@ static void hide_show_graphics_widgets(void)
|
|||
}
|
||||
|
||||
// "Window" video type selected
|
||||
static void mn_window(...)
|
||||
{
|
||||
static void mn_window(...){
|
||||
display_type = DISPLAY_WINDOW;
|
||||
hide_show_graphics_widgets();
|
||||
}
|
||||
|
||||
// "Fullscreen" video type selected
|
||||
static void mn_fullscreen(...)
|
||||
{
|
||||
static void mn_fullscreen(...){
|
||||
display_type = DISPLAY_SCREEN;
|
||||
hide_show_graphics_widgets();
|
||||
}
|
||||
|
@ -818,15 +816,37 @@ static void set_graphics_sensitive(void){
|
|||
}
|
||||
|
||||
// "Disable Sound Output" button toggled
|
||||
static void tb_nosound(GtkWidget *widget)
|
||||
{
|
||||
static void tb_nosound(GtkWidget *widget){
|
||||
PrefsReplaceBool("nosound", GTK_TOGGLE_BUTTON(widget)->active);
|
||||
set_graphics_sensitive();
|
||||
}
|
||||
|
||||
// SDL Graphics
|
||||
#ifdef USE_SDL_VIDEO
|
||||
|
||||
// SDL Renderer Render driver
|
||||
enum {
|
||||
RENDER_SOFTWARE = 0,
|
||||
RENDER_OPENGL = 1
|
||||
};
|
||||
|
||||
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;}
|
||||
|
||||
// SDL Renderer Vertical Sync
|
||||
static void tb_sdl_vsync(GtkWidget *widget){
|
||||
PrefsReplaceBool("sdl_vsync", GTK_TOGGLE_BUTTON(widget)->active);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Read graphics preferences
|
||||
static void parse_graphics_prefs(void)
|
||||
{
|
||||
static void parse_graphics_prefs(void){
|
||||
display_type = DISPLAY_WINDOW;
|
||||
dis_width = 512;
|
||||
dis_height = 384;
|
||||
|
@ -838,11 +858,38 @@ static void parse_graphics_prefs(void)
|
|||
if (sscanf(str, "dga/%d/%d", &dis_width, &dis_height) == 2)
|
||||
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;
|
||||
}
|
||||
#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;
|
||||
default:
|
||||
PrefsRemoveItem("sdlrender");
|
||||
return;
|
||||
}
|
||||
PrefsReplaceString("sdlrender", rpref);
|
||||
}
|
||||
|
||||
// Read settings from widgets and set preferences
|
||||
static void read_graphics_settings(void)
|
||||
{
|
||||
static void read_graphics_settings(void){
|
||||
const char *str;
|
||||
|
||||
str = gtk_entry_get_text(GTK_ENTRY(w_display_x));
|
||||
|
@ -864,11 +911,13 @@ static void read_graphics_settings(void)
|
|||
return;
|
||||
}
|
||||
PrefsReplaceString("screen", pref);
|
||||
#ifdef USE_SDL_VIDEO
|
||||
read_SDL_graphics_settings();
|
||||
#endif
|
||||
}
|
||||
|
||||
// Create "Graphics/Sound" pane
|
||||
static void create_graphics_pane(GtkWidget *top)
|
||||
{
|
||||
static void create_graphics_pane(GtkWidget *top){
|
||||
GtkWidget *box, *table, *label, *opt, *menu, *combo;
|
||||
char str[32];
|
||||
|
||||
|
@ -969,6 +1018,35 @@ static void create_graphics_pane(GtkWidget *top)
|
|||
gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 3, 4, (GtkAttachOptions)GTK_FILL, (GtkAttachOptions)0, 4, 4);
|
||||
w_display_y = GTK_COMBO(combo)->entry;
|
||||
|
||||
#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));
|
||||
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;
|
||||
}
|
||||
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_checkbox(box, STR_NOSOUND_CTRL, "nosound", GTK_SIGNAL_FUNC(tb_nosound));
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ using std::string;
|
|||
|
||||
#include "prefs.h"
|
||||
|
||||
|
||||
// Platform-specific preferences items
|
||||
prefs_desc platform_prefs_items[] = {
|
||||
{"fbdevicefile", TYPE_STRING, false, "path of frame buffer device specification file"},
|
||||
|
@ -37,17 +36,16 @@ prefs_desc platform_prefs_items[] = {
|
|||
{"idlewait", TYPE_BOOLEAN, false, "sleep when idle"},
|
||||
#ifdef USE_SDL_VIDEO
|
||||
{"sdlrender", TYPE_STRING, false, "SDL_Renderer driver (\"auto\", \"software\" (may be faster), etc.)"},
|
||||
{"sdl_vsync", TYPE_BOOLEAN, false, "Make SDL_Renderer vertical sync frames to host (eg. with software renderer)"},
|
||||
#endif
|
||||
{NULL, TYPE_END, false, NULL} // End of list
|
||||
};
|
||||
|
||||
|
||||
// Prefs file name and path
|
||||
const char PREFS_FILE_NAME[] = ".basilisk_ii_prefs";
|
||||
string UserPrefsPath;
|
||||
static string prefs_path;
|
||||
|
||||
|
||||
/*
|
||||
* Load preferences from settings file
|
||||
*/
|
||||
|
@ -90,13 +88,11 @@ void LoadPrefs(const char *vmdir)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Save preferences to settings file
|
||||
*/
|
||||
|
||||
void SavePrefs(void)
|
||||
{
|
||||
void SavePrefs(void){
|
||||
FILE *f;
|
||||
if ((f = fopen(prefs_path.c_str(), "w")) != NULL) {
|
||||
SavePrefsToStream(f);
|
||||
|
@ -104,32 +100,19 @@ void SavePrefs(void)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Add defaults of platform-specific prefs items
|
||||
* You may also override the defaults set in PrefsInit()
|
||||
*/
|
||||
|
||||
void AddPlatformPrefsDefaults(void)
|
||||
{
|
||||
void AddPlatformPrefsDefaults(void){
|
||||
PrefsAddBool("keycodes", false);
|
||||
PrefsReplaceString("extfs", "/");
|
||||
PrefsReplaceInt32("mousewheelmode", 1);
|
||||
PrefsReplaceInt32("mousewheellines", 3);
|
||||
#ifdef __linux__
|
||||
if (access("/dev/sound/dsp", F_OK) == 0) {
|
||||
PrefsReplaceString("dsp", "/dev/sound/dsp");
|
||||
} else {
|
||||
PrefsReplaceString("dsp", "/dev/dsp");
|
||||
}
|
||||
if (access("/dev/sound/mixer", F_OK) == 0) {
|
||||
PrefsReplaceString("mixer", "/dev/sound/mixer");
|
||||
} else {
|
||||
PrefsReplaceString("mixer", "/dev/mixer");
|
||||
}
|
||||
#else
|
||||
PrefsReplaceString("dsp", "/dev/dsp");
|
||||
PrefsReplaceString("mixer", "/dev/mixer");
|
||||
#endif
|
||||
PrefsAddBool("idlewait", true);
|
||||
#ifdef USE_SDL_VIDEO
|
||||
PrefsReplaceString("sdlrender", "software");
|
||||
PrefsReplaceBool("sdl_vsync", true);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user