--- hatari/src/gui-sdl/dlgScreen.c 2019/04/09 08:55:53 1.1.1.15 +++ hatari/src/gui-sdl/dlgScreen.c 2019/04/09 08:58:20 1.1.1.17 @@ -73,7 +73,7 @@ static SGOBJ monitordlg[] = { SGRADIOBUT, SG_EXIT, 0, 18,13, 11,1, "1_6 colors" }, { SGBUTTON, SG_DEFAULT, 0, 7,16, 20,1, "Back to main menu" }, - { -1, 0, 0, 0,0, 0,0, NULL } + { SGSTOP, 0, 0, 0,0, 0,0, NULL } }; @@ -100,8 +100,9 @@ static SGOBJ monitordlg[] = #define DLGSCRN_RECANIM 30 #if WITH_SDL2 #define DLGSCRN_LINEARSCALE 33 -#define DLGSCRN_VSYNC 34 -#define DLGSCRN_EXIT_WINDOW 35 +#define DLGSCRN_RESIZABLE 34 +#define DLGSCRN_VSYNC 35 +#define DLGSCRN_EXIT_WINDOW 36 #else #define DLGSCRN_EXIT_WINDOW 31 #endif @@ -136,10 +137,17 @@ static SGOBJ windowdlg[] = { SGRADIOBUT, 0, 0, 21,7, 3,1, "_2" }, { SGRADIOBUT, 0, 0, 21,8, 3,1, "_4" }, { SGRADIOBUT, 0, 0, 21,9, 6,1, "_Auto" }, +#if WITH_SDL2 + { SGTEXT, 0, 0, 35,4, 10,1, "resolution" }, + { SGTEXT, 0, 0, 35,5, 13,1, "in fullscreen" }, + { SGTEXT, 0, 0, 33,2, 1,1, "" }, + { SGCHECKBOX, 0, 0, 33,3, 14,1, "_Keep desktop" }, +#else { SGTEXT, 0, 0, 33,2, 14,1, "Keep desktop" }, { SGTEXT, 0, 0, 33,3, 14,1, "resolution:" }, { SGCHECKBOX, 0, 0, 35,4, 8,1, "ST/ST_e" }, { SGCHECKBOX, 0, 0, 35,5, 11,1, "_TT/Falcon" }, +#endif { SGTEXT, 0, 0, 33,7, 15,1, "Max zoomed win:" }, { SGBUTTON, 0, 0, 35,8, 1,1, "\x04", SG_SHORTCUT_LEFT }, { SGTEXT, 0, 0, 37,8, 4,1, sMaxWidth }, @@ -158,13 +166,14 @@ static SGOBJ windowdlg[] = #if WITH_SDL2 { SGBOX, 0, 0, 1,18, 50,4, NULL }, { SGTEXT, 0, 0, 20,18, 12,1, "SDL2 options" }, - { SGCHECKBOX, 0, 0, 4,20, 20,1, "Use linear scal_ing" }, - { SGCHECKBOX, 0, 0, 28,20, 11,1, "Use _VSync" }, + { SGCHECKBOX, 0, 0, 4,20, 20,1, "Linear scal_ing" }, + { SGCHECKBOX, 0, 0, 23,20, 20,1, "Resi_zable" }, + { SGCHECKBOX, 0, 0, 36,20, 11,1, "_VSync" }, { SGBUTTON, SG_DEFAULT, 0, 17,23, 20,1, "Back to main menu" }, #else { SGBUTTON, SG_DEFAULT, 0, 17,18, 20,1, "Back to main menu" }, #endif - { -1, 0, 0, 0,0, 0,0, NULL } + { SGSTOP, 0, 0, 0,0, 0,0, NULL } }; /* for record button */ @@ -330,10 +339,12 @@ void Dialog_WindowDlg(void) windowdlg[DLGSCRN_KEEP_RES].state |= SG_SELECTED; else windowdlg[DLGSCRN_KEEP_RES].state &= ~SG_SELECTED; +#if !WITH_SDL2 if (ConfigureParams.Screen.bKeepResolutionST) windowdlg[DLGSCRN_KEEP_RES_ST].state |= SG_SELECTED; else windowdlg[DLGSCRN_KEEP_RES_ST].state &= ~SG_SELECTED; +#endif windowdlg[DLGSCRN_STATUSBAR].state &= ~SG_SELECTED; windowdlg[DLGSCRN_DRIVELED].state &= ~SG_SELECTED; @@ -345,7 +356,7 @@ void Dialog_WindowDlg(void) else windowdlg[DLGSCRN_NONE].state |= SG_SELECTED; - for (i = 0; i < ARRAYSIZE(skip_frames); i++) + for (i = 0; i < ARRAY_SIZE(skip_frames); i++) { if (ConfigureParams.Screen.nFrameSkips >= skip_frames[i]) skip = i; @@ -373,6 +384,10 @@ void Dialog_WindowDlg(void) #if WITH_SDL2 /* SDL2 options */ + if (ConfigureParams.Screen.bResizable) + windowdlg[DLGSCRN_RESIZABLE].state |= SG_SELECTED; + else + windowdlg[DLGSCRN_RESIZABLE].state &= ~SG_SELECTED; if (ConfigureParams.Screen.nRenderScaleQuality) windowdlg[DLGSCRN_LINEARSCALE].state |= SG_SELECTED; else @@ -446,7 +461,9 @@ void Dialog_WindowDlg(void) ConfigureParams.Screen.bFullScreen = (windowdlg[DLGSCRN_FULLSCRN].state & SG_SELECTED); ConfigureParams.Screen.bKeepResolution = (windowdlg[DLGSCRN_KEEP_RES].state & SG_SELECTED); +#if !WITH_SDL2 ConfigureParams.Screen.bKeepResolutionST = (windowdlg[DLGSCRN_KEEP_RES_ST].state & SG_SELECTED); +#endif ConfigureParams.Screen.nMaxWidth = maxw; ConfigureParams.Screen.nMaxHeight = maxh; @@ -470,6 +487,7 @@ void Dialog_WindowDlg(void) ConfigureParams.Screen.bCrop = (windowdlg[DLGSCRN_CROP].state & SG_SELECTED); #if WITH_SDL2 + ConfigureParams.Screen.bResizable = (windowdlg[DLGSCRN_RESIZABLE].state & SG_SELECTED); ConfigureParams.Screen.nRenderScaleQuality = (windowdlg[DLGSCRN_LINEARSCALE].state & SG_SELECTED) ? 1 : 0; ConfigureParams.Screen.bUseVsync = (windowdlg[DLGSCRN_VSYNC].state & SG_SELECTED); #endif