From 456e87433a1b642b84ac4161332da502c2d9a79f Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Fri, 23 Feb 2007 23:41:58 +0000 Subject: 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 --- setup/configfile.c | 1 + setup/display.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ setup/display.h | 1 + 3 files changed, 53 insertions(+) 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); -- cgit v1.2.3