@@ -33,7 +33,7 @@ static int retval = -1;
3333static void populate_video_modes (BOOL firstTime )
3434{
3535 int i , j , mode3d = -1 ;
36- int xdim = 0 , ydim = 0 , bpp = 0 , fullscreen = 0 ;
36+ int xdim = 0 , ydim = 0 , bpp = 0 , fs = 0 ;
3737 TCHAR modestr [64 ];
3838 int cd [] = { 32 , 24 , 16 , 15 , 8 , 0 };
3939 HWND hwnd ;
@@ -44,24 +44,25 @@ static void populate_video_modes(BOOL firstTime)
4444 xdim = settings -> xdim3d ;
4545 ydim = settings -> ydim3d ;
4646 bpp = settings -> bpp3d ;
47- fullscreen = settings -> fullscreen ;
47+ fs = settings -> fullscreen ;
4848 } else {
49- fullscreen = IsDlgButtonChecked (pages [TAB_CONFIG ], IDC_FULLSCREEN ) == BST_CHECKED ;
49+ fs = IsDlgButtonChecked (pages [TAB_CONFIG ], IDC_FULLSCREEN ) == BST_CHECKED ;
5050 i = ComboBox_GetCurSel (hwnd );
5151 if (i != CB_ERR ) i = ComboBox_GetItemData (hwnd , i );
5252 if (i != CB_ERR ) {
5353 xdim = validmode [i ].xdim ;
5454 ydim = validmode [i ].ydim ;
5555 bpp = validmode [i ].bpp ;
56+ fs = MAKE_VIDMODE_FULLSCREEN (validmode [i ].display , fs );
5657 }
5758 }
5859
5960 // Find an ideal match.
60- mode3d = checkvideomode (& xdim , & ydim , bpp , fullscreen , 1 );
61+ mode3d = checkvideomode (& xdim , & ydim , bpp , fs , 1 );
6162 if (mode3d < 0 ) {
6263 for (i = 0 ; cd [i ]; ) { if (cd [i ] >= bpp ) i ++ ; else break ; }
6364 for ( ; cd [i ]; i ++ ) {
64- mode3d = checkvideomode (& xdim , & ydim , cd [i ], fullscreen , 1 );
65+ mode3d = checkvideomode (& xdim , & ydim , cd [i ], fs , 1 );
6566 if (mode3d < 0 ) continue ;
6667 break ;
6768 }
@@ -70,10 +71,15 @@ static void populate_video_modes(BOOL firstTime)
7071 // Repopulate the list.
7172 ComboBox_ResetContent (hwnd );
7273 for (i = 0 ; i < validmodecnt ; i ++ ) {
73- if (validmode [i ].fs != fullscreen ) continue ;
74+ if (validmode [i ].fs != ( fs & 255 ) ) continue ;
7475
75- StringCbPrintf (modestr , sizeof (modestr ), TEXT ("%d x %d %d-bpp" ),
76- validmode [i ].xdim , validmode [i ].ydim , validmode [i ].bpp );
76+ if (validmode [i ].fs ) {
77+ StringCbPrintf (modestr , sizeof (modestr ), TEXT ("Display %d - %d x %d %d-bpp" ),
78+ validmode [i ].display , validmode [i ].xdim , validmode [i ].ydim , validmode [i ].bpp );
79+ } else {
80+ StringCbPrintf (modestr , sizeof (modestr ), TEXT ("%d x %d %d-bpp" ),
81+ validmode [i ].xdim , validmode [i ].ydim , validmode [i ].bpp );
82+ }
7783 j = ComboBox_AddString (hwnd , modestr );
7884 ComboBox_SetItemData (hwnd , j , i );
7985 if (i == mode3d ) {
@@ -107,7 +113,7 @@ static void setup_config_mode(void)
107113 CheckDlgButton (startupdlg , IDC_ALWAYSSHOW , (settings -> forcesetup ? BST_CHECKED : BST_UNCHECKED ));
108114 EnableWindow (GetDlgItem (startupdlg , IDC_ALWAYSSHOW ), TRUE);
109115
110- CheckDlgButton (pages [TAB_CONFIG ], IDC_FULLSCREEN , (settings -> fullscreen ? BST_CHECKED : BST_UNCHECKED ));
116+ CheckDlgButton (pages [TAB_CONFIG ], IDC_FULLSCREEN , (( settings -> fullscreen & 255 ) ? BST_CHECKED : BST_UNCHECKED ));
111117 EnableWindow (GetDlgItem (pages [TAB_CONFIG ], IDC_FULLSCREEN ), TRUE);
112118
113119 populate_video_modes (TRUE);
@@ -190,7 +196,7 @@ static void startbutton_clicked(void)
190196 settings -> xdim3d = validmode [i ].xdim ;
191197 settings -> ydim3d = validmode [i ].ydim ;
192198 settings -> bpp3d = validmode [i ].bpp ;
193- settings -> fullscreen = validmode [i ].fs ;
199+ settings -> fullscreen = MAKE_VIDMODE_FULLSCREEN ( validmode [i ].display , validmode [ i ]. fs ) ;
194200 }
195201
196202 settings -> numplayers = 0 ;
0 commit comments