mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-05-09 03:41:10 +08:00
Merge pull request #5561 from DieSkaarj/master
Isolated Modeswitching for use with SDL2 only
This commit is contained in:
commit
16a29e7bce
@ -2190,9 +2190,10 @@ void DOSBOX_SetupConfigSections(void) {
|
|||||||
"For pixel-perfect scaling (output=openglpp), it is recommended to turn this option off.");
|
"For pixel-perfect scaling (output=openglpp), it is recommended to turn this option off.");
|
||||||
Pbool->SetBasic(true);
|
Pbool->SetBasic(true);
|
||||||
|
|
||||||
Pbool = secprop->Add_bool("modeswitch",Property::Changeable::Always,true);
|
Pbool = secprop->Add_bool("modeswitch",Property::Changeable::Always,false);
|
||||||
Pbool->Set_help("Let DOSBox-X determine the resolution of the monitor. ");
|
Pbool->Set_help("Let DOSBox-X determine the resolution of the monitor. "
|
||||||
Pbool->SetBasic(true);
|
"This feature is only available when DOSBox-X is compiled with SDL2 support.");
|
||||||
|
Pbool->SetBasic(false);
|
||||||
|
|
||||||
Pmulti = secprop->Add_multi("scaler",Property::Changeable::Always," ");
|
Pmulti = secprop->Add_multi("scaler",Property::Changeable::Always," ");
|
||||||
Pmulti->SetValue("normal2x",/*init*/true);
|
Pmulti->SetValue("normal2x",/*init*/true);
|
||||||
|
@ -399,9 +399,10 @@ static const char *def_menu_video_output[] =
|
|||||||
#endif
|
#endif
|
||||||
"--",
|
"--",
|
||||||
"doublescan",
|
"doublescan",
|
||||||
"modeswitch",
|
|
||||||
#if !defined(C_SDL2)
|
#if !defined(C_SDL2)
|
||||||
"doublebuf",
|
"doublebuf",
|
||||||
|
#else
|
||||||
|
"modeswitch",
|
||||||
#endif
|
#endif
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
@ -3253,8 +3253,10 @@ void AllocCallback1() {
|
|||||||
#endif
|
#endif
|
||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"doublescan").set_text("Doublescan").
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"doublescan").set_text("Doublescan").
|
||||||
set_callback_function(doublescan_menu_callback);
|
set_callback_function(doublescan_menu_callback);
|
||||||
|
#if C_SDL2
|
||||||
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"modeswitch").set_text("Modeswitch").
|
mainMenu.alloc_item(DOSBoxMenu::item_type_id,"modeswitch").set_text("Modeswitch").
|
||||||
set_callback_function(modeswitch_menu_callback);
|
set_callback_function(modeswitch_menu_callback);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
DOSBoxMenu::item &item = mainMenu.alloc_item(DOSBoxMenu::submenu_type_id,"VideoVsyncMenu");
|
DOSBoxMenu::item &item = mainMenu.alloc_item(DOSBoxMenu::submenu_type_id,"VideoVsyncMenu");
|
||||||
|
@ -1161,6 +1161,7 @@ void RENDER_OnSectionPropChange(Section *x) {
|
|||||||
|
|
||||||
bool p_doublescan = vga.draw.doublescan_set;
|
bool p_doublescan = vga.draw.doublescan_set;
|
||||||
bool p_char9 = vga.draw.char9_set;
|
bool p_char9 = vga.draw.char9_set;
|
||||||
|
bool p_modeswitch = vga.draw.modeswitch_set;
|
||||||
int p_aspect = render.aspect;
|
int p_aspect = render.aspect;
|
||||||
|
|
||||||
std::string s_aspect = section->Get_string("aspect");
|
std::string s_aspect = section->Get_string("aspect");
|
||||||
@ -1174,19 +1175,27 @@ void RENDER_OnSectionPropChange(Section *x) {
|
|||||||
render.frameskip.max = (Bitu)section->Get_int("frameskip");
|
render.frameskip.max = (Bitu)section->Get_int("frameskip");
|
||||||
|
|
||||||
vga.draw.doublescan_set=section->Get_bool("doublescan");
|
vga.draw.doublescan_set=section->Get_bool("doublescan");
|
||||||
vga.draw.modeswitch_set=section->Get_bool("modeswitch");
|
|
||||||
vga.draw.char9_set=section->Get_bool("char9");
|
vga.draw.char9_set=section->Get_bool("char9");
|
||||||
|
|
||||||
|
#if C_SDL2
|
||||||
|
vga.draw.modeswitch_set=section->Get_bool("modeswitch");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (render.aspect != p_aspect || vga.draw.doublescan_set != p_doublescan || vga.draw.char9_set != p_char9)
|
if (render.aspect != p_aspect || vga.draw.doublescan_set != p_doublescan || \
|
||||||
|
vga.draw.char9_set != p_char9 || vga.draw.modeswitch_set != p_modeswitch)
|
||||||
RENDER_CallBack(GFX_CallBackReset);
|
RENDER_CallBack(GFX_CallBackReset);
|
||||||
if (vga.draw.doublescan_set != p_doublescan || vga.draw.char9_set != p_char9)
|
if (vga.draw.doublescan_set != p_doublescan || vga.draw.char9_set != p_char9 || \
|
||||||
|
vga.draw.modeswitch_set != p_modeswitch)
|
||||||
VGA_StartResize();
|
VGA_StartResize();
|
||||||
|
|
||||||
mainMenu.get_item("vga_9widetext").check(vga.draw.char9_set).refresh_item(mainMenu);
|
mainMenu.get_item("vga_9widetext").check(vga.draw.char9_set).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("doublescan").check(vga.draw.doublescan_set).refresh_item(mainMenu);
|
mainMenu.get_item("doublescan").check(vga.draw.doublescan_set).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("modeswitch").check(vga.draw.modeswitch_set).refresh_item(mainMenu);
|
|
||||||
mainMenu.get_item("mapper_aspratio").check(render.aspect).refresh_item(mainMenu);
|
mainMenu.get_item("mapper_aspratio").check(render.aspect).refresh_item(mainMenu);
|
||||||
|
|
||||||
|
#if C_SDL2
|
||||||
|
mainMenu.get_item("modeswitch").check(vga.draw.modeswitch_set).refresh_item(mainMenu);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if C_XBRZ
|
#if C_XBRZ
|
||||||
xBRZ_Change_Options(section);
|
xBRZ_Change_Options(section);
|
||||||
#endif
|
#endif
|
||||||
@ -1360,8 +1369,12 @@ void RENDER_Init() {
|
|||||||
control->GetSection("render")->onpropchange.push_back(&RENDER_OnSectionPropChange);
|
control->GetSection("render")->onpropchange.push_back(&RENDER_OnSectionPropChange);
|
||||||
|
|
||||||
vga.draw.doublescan_set=section->Get_bool("doublescan");
|
vga.draw.doublescan_set=section->Get_bool("doublescan");
|
||||||
vga.draw.modeswitch_set=section->Get_bool("modeswitch");
|
|
||||||
vga.draw.char9_set=section->Get_bool("char9");
|
vga.draw.char9_set=section->Get_bool("char9");
|
||||||
|
|
||||||
|
#if C_SDL2
|
||||||
|
vga.draw.modeswitch_set=section->Get_bool("modeswitch");
|
||||||
|
#endif
|
||||||
|
|
||||||
eurAscii = section->Get_int("euro");
|
eurAscii = section->Get_int("euro");
|
||||||
if (eurAscii != -1 && (eurAscii < 33 || eurAscii > 255)) {
|
if (eurAscii != -1 && (eurAscii < 33 || eurAscii > 255)) {
|
||||||
LOG_MSG("Euro ASCII value has to be between 33 and 255\n");
|
LOG_MSG("Euro ASCII value has to be between 33 and 255\n");
|
||||||
@ -1445,9 +1458,12 @@ void RENDER_Init() {
|
|||||||
|
|
||||||
mainMenu.get_item("vga_9widetext").check(vga.draw.char9_set).refresh_item(mainMenu);
|
mainMenu.get_item("vga_9widetext").check(vga.draw.char9_set).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("doublescan").check(vga.draw.doublescan_set).refresh_item(mainMenu);
|
mainMenu.get_item("doublescan").check(vga.draw.doublescan_set).refresh_item(mainMenu);
|
||||||
mainMenu.get_item("modeswitch").check(vga.draw.modeswitch_set).refresh_item(mainMenu);
|
|
||||||
mainMenu.get_item("mapper_aspratio").check(render.aspect).refresh_item(mainMenu);
|
mainMenu.get_item("mapper_aspratio").check(render.aspect).refresh_item(mainMenu);
|
||||||
|
|
||||||
|
#if C_SDL2
|
||||||
|
mainMenu.get_item("modeswitch").check(vga.draw.modeswitch_set).refresh_item(mainMenu);
|
||||||
|
#endif
|
||||||
|
|
||||||
RENDER_UpdateFrameskipMenu();
|
RENDER_UpdateFrameskipMenu();
|
||||||
|
|
||||||
/* BUG FIX: Some people's dosbox-x.conf files have frameskip=-1 WTF?? */
|
/* BUG FIX: Some people's dosbox-x.conf files have frameskip=-1 WTF?? */
|
||||||
|
@ -1642,21 +1642,19 @@ SDL_Window* GFX_SetSDLWindowMode(uint16_t width, uint16_t height, SCREEN_TYPES s
|
|||||||
* On Android, desktop res is the only way.
|
* On Android, desktop res is the only way.
|
||||||
*/
|
*/
|
||||||
SDL_SetWindowResizable(sdl.window, SDL2_resize_enable ? SDL_TRUE : SDL_FALSE);
|
SDL_SetWindowResizable(sdl.window, SDL2_resize_enable ? SDL_TRUE : SDL_FALSE);
|
||||||
|
SDL_WindowFlags flags = SDL_WINDOW_FULLSCREEN_DESKTOP;
|
||||||
|
|
||||||
SDL_WindowFlags flags;
|
#if C_SDL2
|
||||||
bool p_modeswitch = vga.draw.modeswitch_set;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When modeswitching _is_ enabled let's go with sane values.
|
* When modeswitching _is_ enabled let's go with sane values.
|
||||||
*/
|
*/
|
||||||
|
bool p_modeswitch = vga.draw.modeswitch_set;
|
||||||
if( p_modeswitch ) {
|
if(p_modeswitch) {
|
||||||
flags = SDL_WINDOW_FULLSCREEN;
|
flags = SDL_WINDOW_FULLSCREEN;
|
||||||
width = sdl.draw.width;
|
width = sdl.draw.width;
|
||||||
height = sdl.draw.height;
|
height = sdl.draw.height;
|
||||||
} else {
|
|
||||||
flags = SDL_WINDOW_FULLSCREEN_DESKTOP;
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (GFX_IsFullscreen()) {
|
if (GFX_IsFullscreen()) {
|
||||||
SDL_DisplayMode displayMode;
|
SDL_DisplayMode displayMode;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user