--- hatari/src/gui-sdl/dlgScreen.c 2019/04/09 08:52:14 1.1.1.12 +++ hatari/src/gui-sdl/dlgScreen.c 2019/04/09 08:58:20 1.1.1.17 @@ -1,8 +1,8 @@ /* Hatari - dlgScreen.c - This file is distributed under the GNU Public License, version 2 or at - your option any later version. Read the file gpl.txt for details. + This file is distributed under the GNU General Public License, version 2 + or at your option any later version. Read the file gpl.txt for details. Atari monitor and Hatari window settings. */ @@ -12,6 +12,7 @@ const char DlgScreen_fileid[] = "Hatari #include "configuration.h" #include "dialog.h" #include "sdlgui.h" +#include "options.h" #include "screen.h" #include "screenSnapShot.h" #include "resolution.h" @@ -21,8 +22,6 @@ const char DlgScreen_fileid[] = "Hatari #include "statusbar.h" #include "clocks_timings.h" -#define ITEMS_IN_ARRAY(a) (sizeof(a)/sizeof(a[0])) - /* The Monitor dialog: */ #define DLGSCRN_MONO 3 @@ -52,53 +51,61 @@ static SGOBJ monitordlg[] = { SGBOX, 0, 0, 1,1, 32,6, NULL }, { SGTEXT, 0, 0, 10,1, 14,1, "Atari monitor" }, - { SGRADIOBUT, 0, 0, 4,3, 6,1, "Mono" }, - { SGRADIOBUT, 0, 0, 12,3, 6,1, "RGB" }, - { SGRADIOBUT, 0, 0, 19,3, 6,1, "VGA" }, - { SGRADIOBUT, 0, 0, 26,3, 6,1, "TV" }, - { SGCHECKBOX, 0, 0, 12,5, 22,1, "Show borders" }, + { SGRADIOBUT, 0, 0, 4,3, 6,1, "_Mono" }, + { SGRADIOBUT, 0, 0, 12,3, 5,1, "_RGB" }, + { SGRADIOBUT, 0, 0, 19,3, 5,1, "_VGA" }, + { SGRADIOBUT, 0, 0, 26,3, 4,1, "_TV" }, + { SGCHECKBOX, 0, 0, 12,5, 14,1, "Show _borders" }, { SGBOX, 0, 0, 1,8, 32,7, NULL }, - { SGCHECKBOX, 0, 0, 4,9, 33,1, "Use extended VDI screen" }, + { SGCHECKBOX, 0, 0, 4,9, 25,1, "Use _extended VDI screen" }, { SGTEXT, 0, 0, 4,11, 5,1, "Size:" }, - { SGBUTTON, 0, 0, 6,12, 1,1, "\x04" }, /* Arrow left */ + { SGBUTTON, 0, 0, 6,12, 1,1, "\x04", SG_SHORTCUT_LEFT }, { SGTEXT, 0, 0, 8,12, 4,1, sVdiWidth }, - { SGBUTTON, 0, 0, 13,12, 1,1, "\x03" }, /* Arrow right */ + { SGBUTTON, 0, 0, 13,12, 1,1, "\x03", SG_SHORTCUT_RIGHT }, { SGTEXT, 0, 0, 4,13, 1,1, "x" }, - { SGBUTTON, 0, 0, 6,13, 1,1, "\x04" }, /* Arrow left */ + { SGBUTTON, 0, 0, 6,13, 1,1, "\x04", SG_SHORTCUT_UP }, { SGTEXT, 0, 0, 8,13, 4,1, sVdiHeight }, - { SGBUTTON, 0, 0, 13,13, 1,1, "\x03" }, /* Arrow right */ + { SGBUTTON, 0, 0, 13,13, 1,1, "\x03", SG_SHORTCUT_DOWN }, - { SGRADIOBUT, SG_EXIT, 0, 18,11, 11,1, " 2 colors" }, - { SGRADIOBUT, SG_EXIT, 0, 18,12, 11,1, " 4 colors" }, - { SGRADIOBUT, SG_EXIT, 0, 18,13, 11,1, "16 colors" }, + { SGRADIOBUT, SG_EXIT, 0, 18,11, 11,1, " _2 colors" }, + { SGRADIOBUT, SG_EXIT, 0, 18,12, 11,1, " _4 colors" }, + { 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 } }; /* The window dialog: */ #define DLGSCRN_FULLSCRN 3 #define DLGSCRN_STATUSBAR 5 -#define DLGSCRN_DRIVELED 6 +#define DLGSCRN_DRIVELED 6 #define DLGSCRN_NONE 7 #define DLGSCRN_SKIP0 9 #define DLGSCRN_SKIP1 10 #define DLGSCRN_SKIP2 11 #define DLGSCRN_SKIP3 12 #define DLGSCRN_SKIP4 13 -#define DLGSCRN_KEEP_RES 15 -#define DLGSCRN_MAX_WLESS 18 -#define DLGSCRN_MAX_WTEXT 19 -#define DLGSCRN_MAX_WMORE 20 -#define DLGSCRN_MAX_HLESS 22 -#define DLGSCRN_MAX_HTEXT 23 -#define DLGSCRN_MAX_HMORE 24 -#define DLGSCRN_CROP 27 -#define DLGSCRN_CAPTURE 28 -#define DLGSCRN_RECANIM 29 -#define DLGSCRN_EXIT_WINDOW 30 +#define DLGSCRN_KEEP_RES_ST 16 +#define DLGSCRN_KEEP_RES 17 +#define DLGSCRN_MAX_WLESS 19 +#define DLGSCRN_MAX_WTEXT 20 +#define DLGSCRN_MAX_WMORE 21 +#define DLGSCRN_MAX_HLESS 23 +#define DLGSCRN_MAX_HTEXT 24 +#define DLGSCRN_MAX_HMORE 25 +#define DLGSCRN_CROP 28 +#define DLGSCRN_CAPTURE 29 +#define DLGSCRN_RECANIM 30 +#if WITH_SDL2 +#define DLGSCRN_LINEARSCALE 33 +#define DLGSCRN_RESIZABLE 34 +#define DLGSCRN_VSYNC 35 +#define DLGSCRN_EXIT_WINDOW 36 +#else +#define DLGSCRN_EXIT_WINDOW 31 +#endif /* needs to match Frame skip values in windowdlg[]! */ static const int skip_frames[] = { 0, 1, 2, 4, AUTO_FRAMESKIP_LIMIT }; @@ -112,43 +119,67 @@ static char sMaxHeight[5]; /* The window dialog: */ static SGOBJ windowdlg[] = { +#if WITH_SDL2 + { SGBOX, 0, 0, 0,0, 52,25, NULL }, +#else { SGBOX, 0, 0, 0,0, 52,20, NULL }, - +#endif { SGBOX, 0, 0, 1,1, 50,10, NULL }, { SGTEXT, 0, 0, 4,2, 20,1, "Hatari screen options" }, - { SGCHECKBOX, 0, 0, 4,4, 12,1, "Fullscreen" }, + { SGCHECKBOX, 0, 0, 4,4, 12,1, "_Fullscreen" }, { SGTEXT, 0, 0, 4,6, 12,1, "Indicators:" }, - { SGRADIOBUT, 0, 0, 6,7, 11,1, "Statusbar" }, - { SGRADIOBUT, 0, 0, 6,8, 11,1, "Drive led" }, - { SGRADIOBUT, 0, 0, 6,9, 11,1, "None" }, + { SGRADIOBUT, 0, 0, 6,7, 11,1, "Status_bar" }, + { SGRADIOBUT, 0, 0, 6,8, 11,1, "Drive _led" }, + { SGRADIOBUT, 0, 0, 6,9, 6,1, "_None" }, { SGTEXT, 0, 0, 19,4, 12,1, "Frame skip:" }, - { SGRADIOBUT, 0, 0, 21,5, 7,1, "Off" }, - { SGRADIOBUT, 0, 0, 21,6, 7,1, "1" }, - { SGRADIOBUT, 0, 0, 21,7, 7,1, "2" }, - { SGRADIOBUT, 0, 0, 21,8, 7,1, "4" }, - { SGRADIOBUT, 0, 0, 21,9, 7,1, "Auto" }, - { SGTEXT, 0, 0, 33,2, 15,1, "Falcon/TT only:" }, - { SGCHECKBOX, 0, 0, 33,4, 14,2, "Keep desktop" }, - { SGTEXT, 0, 0, 35,5, 12,1, "resolution" }, + { SGRADIOBUT, 0, 0, 21,5, 5,1, "_Off" }, + { SGRADIOBUT, 0, 0, 21,6, 3,1, "_1" }, + { 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" }, /* Arrow left */ + { SGBUTTON, 0, 0, 35,8, 1,1, "\x04", SG_SHORTCUT_LEFT }, { SGTEXT, 0, 0, 37,8, 4,1, sMaxWidth }, - { SGBUTTON, 0, 0, 43,8, 1,1, "\x03" }, /* Arrow right */ + { SGBUTTON, 0, 0, 43,8, 1,1, "\x03", SG_SHORTCUT_RIGHT }, { SGTEXT, 0, 0, 33,9, 1,1, "x" }, - { SGBUTTON, 0, 0, 35,9, 1,1, "\x04" }, /* Arrow left */ + { SGBUTTON, 0, 0, 35,9, 1,1, "\x04", SG_SHORTCUT_UP }, { SGTEXT, 0, 0, 37,9, 4,1, sMaxHeight }, - { SGBUTTON, 0, 0, 43,9, 1,1, "\x03" }, /* Arrow right */ + { SGBUTTON, 0, 0, 43,9, 1,1, "\x03", SG_SHORTCUT_DOWN }, { SGBOX, 0, 0, 1,12, 50,5, NULL }, { SGTEXT, 0, 0, 7,13, 16,1, "Screen capture" }, - { SGCHECKBOX, 0, 0, 8,15, 16,1, "Crop statusbar" }, - { SGBUTTON, 0, 0, 29,13, 14,1, " Screenshot " }, - { SGBUTTON, 0, 0, 29,15, 14,1, " Record AVI " }, - + { SGCHECKBOX, 0, 0, 8,15, 16,1, "_Crop statusbar" }, + { SGBUTTON, 0, 0, 29,13, 14,1, " _Screenshot " }, + { SGBUTTON, 0, 0, 29,15, 14,1, NULL }, /* Record text set later */ + +#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, "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" }, - { -1, 0, 0, 0,0, 0,0, NULL } +#endif + { SGSTOP, 0, 0, 0,0, 0,0, NULL } }; +/* for record button */ +#define RECORD_START "_Record AVI" +#define RECORD_STOP "Stop _record" + /* ---------------------------------------------------------------- */ @@ -190,7 +221,7 @@ static void DlgMonitor_SetVdiStepping(vo */ void Dialog_MonitorDlg(void) { - int but; + int but, vdiw, vdih; unsigned int i; MONITORTYPE mti; @@ -216,36 +247,35 @@ void Dialog_MonitorDlg(void) for (i=0; i<3; i++) monitordlg[DLGSCRN_BPP1 + i].state &= ~SG_SELECTED; monitordlg[DLGSCRN_BPP1 + ConfigureParams.Screen.nVdiColors - GEMCOLOR_2].state |= SG_SELECTED; - sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth); - sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight); + + vdiw = ConfigureParams.Screen.nVdiWidth; + vdih = ConfigureParams.Screen.nVdiHeight; + sprintf(sVdiWidth, "%4i", vdiw); + sprintf(sVdiHeight, "%4i", vdih); DlgMonitor_SetVdiStepping(); /* The monitor dialog main loop */ do { - but = SDLGui_DoDialog(monitordlg, NULL); + but = SDLGui_DoDialog(monitordlg, NULL, false); switch (but) { case DLGSCRN_VDI_WLESS: - ConfigureParams.Screen.nVdiWidth = VDI_Limit(ConfigureParams.Screen.nVdiWidth - nVdiStepX, - nVdiStepX, MIN_VDI_WIDTH, MAX_VDI_WIDTH); - sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth); + vdiw = Opt_ValueAlignMinMax(vdiw - nVdiStepX, nVdiStepX, MIN_VDI_WIDTH, MAX_VDI_WIDTH); + sprintf(sVdiWidth, "%4i", vdiw); break; case DLGSCRN_VDI_WMORE: - ConfigureParams.Screen.nVdiWidth = VDI_Limit(ConfigureParams.Screen.nVdiWidth + nVdiStepX, - nVdiStepX, MIN_VDI_WIDTH, MAX_VDI_WIDTH); - sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth); + vdiw = Opt_ValueAlignMinMax(vdiw + nVdiStepX, nVdiStepX, MIN_VDI_WIDTH, MAX_VDI_WIDTH); + sprintf(sVdiWidth, "%4i", vdiw); break; case DLGSCRN_VDI_HLESS: - ConfigureParams.Screen.nVdiHeight = VDI_Limit(ConfigureParams.Screen.nVdiHeight - nVdiStepY, - nVdiStepY, MIN_VDI_HEIGHT, MAX_VDI_HEIGHT); - sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight); + vdih = Opt_ValueAlignMinMax(vdih - nVdiStepY, nVdiStepY, MIN_VDI_HEIGHT, MAX_VDI_HEIGHT); + sprintf(sVdiHeight, "%4i", vdih); break; case DLGSCRN_VDI_HMORE: - ConfigureParams.Screen.nVdiHeight = VDI_Limit(ConfigureParams.Screen.nVdiHeight + nVdiStepY, - nVdiStepY, MIN_VDI_HEIGHT, MAX_VDI_HEIGHT); - sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight); + vdih = Opt_ValueAlignMinMax(vdih + nVdiStepY, nVdiStepY, MIN_VDI_HEIGHT, MAX_VDI_HEIGHT); + sprintf(sVdiHeight, "%4i", vdih); break; case DLGSCRN_BPP1: @@ -253,12 +283,10 @@ void Dialog_MonitorDlg(void) case DLGSCRN_BPP4: DlgMonitor_SetVdiStepping(); /* Align resolution to actual conditions: */ - ConfigureParams.Screen.nVdiWidth = VDI_Limit(ConfigureParams.Screen.nVdiWidth, nVdiStepX, - MIN_VDI_WIDTH, MAX_VDI_WIDTH); - ConfigureParams.Screen.nVdiHeight = VDI_Limit(ConfigureParams.Screen.nVdiHeight, nVdiStepY, - MIN_VDI_HEIGHT, MAX_VDI_HEIGHT); - sprintf(sVdiWidth, "%4i", ConfigureParams.Screen.nVdiWidth); - sprintf(sVdiHeight, "%4i", ConfigureParams.Screen.nVdiHeight); + vdiw = Opt_ValueAlignMinMax(vdiw, nVdiStepX, MIN_VDI_WIDTH, MAX_VDI_WIDTH); + vdih = Opt_ValueAlignMinMax(vdih, nVdiStepY, MIN_VDI_HEIGHT, MAX_VDI_HEIGHT); + sprintf(sVdiWidth, "%4i", vdiw); + sprintf(sVdiHeight, "%4i", vdih); break; } } @@ -277,6 +305,8 @@ void Dialog_MonitorDlg(void) break; } } + ConfigureParams.Screen.nVdiWidth = vdiw; + ConfigureParams.Screen.nVdiHeight = vdih; ConfigureParams.Screen.bUseExtVdiResolutions = (monitordlg[DLGSCRN_USEVDIRES].state & SG_SELECTED); for (i=0; i<3; i++) @@ -293,7 +323,7 @@ void Dialog_MonitorDlg(void) */ void Dialog_WindowDlg(void) { - int deskw, deskh, but, skip = 0; + int maxw, maxh, deskw, deskh, but, skip = 0; unsigned int i; SDLGui_CenterDlg(windowdlg); @@ -309,8 +339,12 @@ void Dialog_WindowDlg(void) windowdlg[DLGSCRN_KEEP_RES].state |= SG_SELECTED; else windowdlg[DLGSCRN_KEEP_RES].state &= ~SG_SELECTED; - - windowdlg[DLGSCRN_STATUSBAR].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; @@ -322,7 +356,7 @@ void Dialog_WindowDlg(void) else windowdlg[DLGSCRN_NONE].state |= SG_SELECTED; - for (i = 0; i < ITEMS_IN_ARRAY(skip_frames); i++) + for (i = 0; i < ARRAY_SIZE(skip_frames); i++) { if (ConfigureParams.Screen.nFrameSkips >= skip_frames[i]) skip = i; @@ -331,8 +365,10 @@ void Dialog_WindowDlg(void) windowdlg[DLGSCRN_SKIP0+skip].state |= SG_SELECTED; Resolution_GetDesktopSize(&deskw, &deskh); - sprintf(sMaxWidth, "%4i", ConfigureParams.Screen.nMaxWidth); - sprintf(sMaxHeight, "%4i", ConfigureParams.Screen.nMaxHeight); + maxw = ConfigureParams.Screen.nMaxWidth; + maxh = ConfigureParams.Screen.nMaxHeight; + sprintf(sMaxWidth, "%4i", maxw); + sprintf(sMaxHeight, "%4i", maxh); /* Initialize window capture options: */ @@ -342,36 +378,49 @@ void Dialog_WindowDlg(void) windowdlg[DLGSCRN_CROP].state &= ~SG_SELECTED; if (Avi_AreWeRecording()) - windowdlg[DLGSCRN_RECANIM].txt = "Stop record"; + windowdlg[DLGSCRN_RECANIM].txt = RECORD_STOP; else - windowdlg[DLGSCRN_RECANIM].txt = "Record AVI"; + windowdlg[DLGSCRN_RECANIM].txt = RECORD_START; + +#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 + windowdlg[DLGSCRN_LINEARSCALE].state &= ~SG_SELECTED; + + if (ConfigureParams.Screen.bUseVsync) + windowdlg[DLGSCRN_VSYNC].state |= SG_SELECTED; + else + windowdlg[DLGSCRN_VSYNC].state &= ~SG_SELECTED; +#endif /* The window dialog main loop */ do { - but = SDLGui_DoDialog(windowdlg, NULL); + but = SDLGui_DoDialog(windowdlg, NULL, false); switch (but) { case DLGSCRN_MAX_WLESS: - ConfigureParams.Screen.nMaxWidth = VDI_Limit(ConfigureParams.Screen.nMaxWidth - MAX_SIZE_STEP, - MAX_SIZE_STEP, MIN_VDI_WIDTH, deskw); - sprintf(sMaxWidth, "%4i", ConfigureParams.Screen.nMaxWidth); + maxw = Opt_ValueAlignMinMax(maxw - MAX_SIZE_STEP, MAX_SIZE_STEP, MIN_VDI_WIDTH, deskw); + sprintf(sMaxWidth, "%4i", maxw); break; case DLGSCRN_MAX_WMORE: - ConfigureParams.Screen.nMaxWidth = VDI_Limit(ConfigureParams.Screen.nMaxWidth + MAX_SIZE_STEP, - MAX_SIZE_STEP, MIN_VDI_WIDTH, deskw); - sprintf(sMaxWidth, "%4i", ConfigureParams.Screen.nMaxWidth); + maxw = Opt_ValueAlignMinMax(maxw + MAX_SIZE_STEP, MAX_SIZE_STEP, MIN_VDI_WIDTH, deskw); + sprintf(sMaxWidth, "%4i", maxw); break; case DLGSCRN_MAX_HLESS: - ConfigureParams.Screen.nMaxHeight = VDI_Limit(ConfigureParams.Screen.nMaxHeight - MAX_SIZE_STEP, - MAX_SIZE_STEP, MIN_VDI_HEIGHT, deskh); - sprintf(sMaxHeight, "%4i", ConfigureParams.Screen.nMaxHeight); + maxh = Opt_ValueAlignMinMax(maxh - MAX_SIZE_STEP, MAX_SIZE_STEP, MIN_VDI_HEIGHT, deskh); + sprintf(sMaxHeight, "%4i", maxh); break; case DLGSCRN_MAX_HMORE: - ConfigureParams.Screen.nMaxHeight = VDI_Limit(ConfigureParams.Screen.nMaxHeight + MAX_SIZE_STEP, - MAX_SIZE_STEP, MIN_VDI_HEIGHT, deskh); - sprintf(sMaxHeight, "%4i", ConfigureParams.Screen.nMaxHeight); + maxh = Opt_ValueAlignMinMax(maxh + MAX_SIZE_STEP, MAX_SIZE_STEP, MIN_VDI_HEIGHT, deskh); + sprintf(sMaxHeight, "%4i", maxh); break; case DLGSCRN_CAPTURE: @@ -385,11 +434,11 @@ void Dialog_WindowDlg(void) { /* AVI indexing can take a while for larger files */ Statusbar_AddMessage("Finishing AVI file...", 100); - Statusbar_Update(sdlscrn); + Statusbar_Update(sdlscrn, true); Avi_StopRecording(); - windowdlg[DLGSCRN_RECANIM].txt = "Record AVI"; + windowdlg[DLGSCRN_RECANIM].txt = RECORD_START; Statusbar_AddMessage("Emulation paused", 100); - Statusbar_Update(sdlscrn); + Statusbar_Update(sdlscrn, true); } else { @@ -400,7 +449,7 @@ void Dialog_WindowDlg(void) (Uint32)ConfigureParams.Video.AviRecordFps << CLOCKS_TIMINGS_SHIFT_VBL , 1 << CLOCKS_TIMINGS_SHIFT_VBL , ConfigureParams.Video.AviRecordVcodec ); - windowdlg[DLGSCRN_RECANIM].txt = "Stop record"; + windowdlg[DLGSCRN_RECANIM].txt = RECORD_STOP; } break; } @@ -412,6 +461,12 @@ 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; ConfigureParams.Screen.bShowStatusbar = false; ConfigureParams.Screen.bShowDriveLed = false; @@ -430,4 +485,10 @@ 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 }