summaryrefslogtreecommitdiff
path: root/setup
diff options
context:
space:
mode:
authorSimon Howard2007-02-23 23:41:58 +0000
committerSimon Howard2007-02-23 23:41:58 +0000
commit456e87433a1b642b84ac4161332da502c2d9a79f (patch)
treed3cb0ee563af53cc37137cbdb6c1bc5e5daf01c9 /setup
parentf49a12791fc4a4b20a1c4a15784f2f2a4b62fcb9 (diff)
downloadchocolate-doom-456e87433a1b642b84ac4161332da502c2d9a79f.tar.gz
chocolate-doom-456e87433a1b642b84ac4161332da502c2d9a79f.tar.bz2
chocolate-doom-456e87433a1b642b84ac4161332da502c2d9a79f.zip
Add an extra option to chocolate-setup on Windows to allow the video
driver to be selected from directx and windib. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 839
Diffstat (limited to 'setup')
-rw-r--r--setup/configfile.c1
-rw-r--r--setup/display.c51
-rw-r--r--setup/display.h1
3 files changed, 53 insertions, 0 deletions
diff --git a/setup/configfile.c b/setup/configfile.c
index bd461e52..8a3f700b 100644
--- a/setup/configfile.c
+++ b/setup/configfile.c
@@ -263,6 +263,7 @@ static default_t extra_defaults_list[] =
#ifdef FEATURE_MULTIPLAYER
{"player_name", &net_player_name, DEFAULT_STRING, 0, 0},
#endif
+ {"video_driver", &video_driver, DEFAULT_STRING, 0, 0},
};
static default_collection_t extra_defaults =
diff --git a/setup/display.c b/setup/display.c
index 82a24e8d..288e527d 100644
--- a/setup/display.c
+++ b/setup/display.c
@@ -56,6 +56,7 @@ static char *aspect_ratio_strings[] =
static int vidmode = 0;
+char *video_driver = "";
int autoadjust_video_settings = 1;
int aspect_ratio_correct = RATIO_CORRECT_NONE;
int fullscreen = 1;
@@ -63,6 +64,41 @@ int screenmultiply = 1;
int startup_delay = 0;
int show_endoom = 1;
+#ifdef _WIN32
+
+static int win32_video_driver = 0;
+
+static char *win32_video_drivers[] =
+{
+ "DirectX",
+ "Windows GDI",
+};
+
+static void SetWin32VideoDriver(void)
+{
+ if (!strcmp(video_driver, "windib"))
+ {
+ win32_video_driver = 1;
+ }
+ else
+ {
+ win32_video_driver = 0;
+ }
+}
+
+static void UpdateVideoDriver(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(unused))
+{
+ char *drivers[] =
+ {
+ "",
+ "windib",
+ };
+
+ video_driver = drivers[win32_video_driver];
+}
+
+#endif
+
// Given the video settings (fullscreen, screenmultiply, etc), find the
// current video mode
@@ -123,6 +159,21 @@ void ConfigDisplay(void)
window = TXT_NewWindow("Display Configuration");
+#ifdef _WIN32
+ {
+ txt_dropdown_list_t *driver_list;
+
+ driver_list = TXT_NewDropdownList(&win32_video_driver,
+ win32_video_drivers,
+ 2));
+
+ TXT_SignalConnect(driver_list, "changed", UpdateVideoDriver, NULL);
+ SetWin32VideoDriver();
+
+ TXT_AddWidget(window, driver_list);
+ }
+#endif
+
TXT_AddWidgets(window,
TXT_NewCheckBox("Fullscreen", &fullscreen),
ar_table = TXT_NewTable(2),
diff --git a/setup/display.h b/setup/display.h
index af097cdb..c82f70b3 100644
--- a/setup/display.h
+++ b/setup/display.h
@@ -28,6 +28,7 @@ extern int fullscreen;
extern int screenmultiply;
extern int startup_delay;
extern int show_endoom;
+extern char *video_driver;
void ConfigDisplay(void);