summaryrefslogtreecommitdiff
path: root/win32.c
diff options
context:
space:
mode:
authordarkvater <darkvater@openttd.org>2004-09-12 22:03:14 +0000
committerdarkvater <darkvater@openttd.org>2004-09-12 22:03:14 +0000
commit989ed101bc9ff659736354f42ac22dfd23809e92 (patch)
tree059fa9da5c30ef18e3f8d338d639a6d1f3d67e0d /win32.c
parente295e46e3eccd58626ce2b02aab24b96c025636b (diff)
downloadopenttd-989ed101bc9ff659736354f42ac22dfd23809e92.tar.xz
(svn r224) -Fix: Music now finally works on WinXP. DirectMusic is now default for an OS >= WinNT4 (WinNT4, Win2k, WinXP), and MIDI driver for lower OS's (Win95, Win98, WinME, etc).
Diffstat (limited to 'win32.c')
-rw-r--r--win32.c50
1 files changed, 42 insertions, 8 deletions
diff --git a/win32.c b/win32.c
index bee14f853..6519a47e4 100644
--- a/win32.c
+++ b/win32.c
@@ -1775,33 +1775,67 @@ void FiosDelete(const char *name)
DeleteFile(path);
}
+#define Windows_2000 5
+#define Windows_NT3_51 4
+
+/* flags show the minimum required OS to use a given feature. Currently
+ only dwMajorVersion is used
+ MajorVersion MinorVersion
+ Windows Server 2003 5 2
+ Windows XP 5 1
+ Windows 2000 5 0
+ Windows NT 4.0 4 0
+ Windows Me 4 90
+ Windows 98 4 10
+ Windows 95 4 0
+ Windows NT 3.51 3 51
+*/
+
const DriverDesc _video_driver_descs[] = {
- {"null", "Null Video Driver", &_null_video_driver, 0},
+ {"null", "Null Video Driver", &_null_video_driver, 0},
#if defined(WITH_SDL)
- {"sdl", "SDL Video Driver", &_sdl_video_driver, 1},
+ {"sdl", "SDL Video Driver", &_sdl_video_driver, 1},
#endif
- {"win32", "Win32 GDI Video Driver", &_win32_video_driver, 2},
+ {"win32", "Win32 GDI Video Driver", &_win32_video_driver, Windows_NT3_51},
{NULL}
};
const DriverDesc _sound_driver_descs[] = {
{"null", "Null Sound Driver", &_null_sound_driver, 0},
#if defined(WITH_SDL)
- {"sdl", "SDL Sound Driver", &_sdl_sound_driver, 1},
+ {"sdl", "SDL Sound Driver", &_sdl_sound_driver, 1},
#endif
- {"win32", "Win32 WaveOut Driver", &_win32_sound_driver, 2},
+ {"win32", "Win32 WaveOut Driver", &_win32_sound_driver, Windows_NT3_51},
{NULL}
};
const DriverDesc _music_driver_descs[] = {
- {"null", "Null Music Driver", &_null_music_driver, 0},
+ {"null", "Null Music Driver", &_null_music_driver, 0},
#ifdef WIN32_ENABLE_DIRECTMUSIC_SUPPORT
- {"dmusic", "DirectMusic MIDI Driver", &_dmusic_midi_driver, 1},
+ {"dmusic", "DirectMusic MIDI Driver", &_dmusic_midi_driver, Windows_2000},
#endif
- {"win32", "Win32 MIDI Driver", &_win32_music_driver, 2},
+ // Win32 MIDI driver has higher priority then DMusic, so this one is chosen
+ {"win32", "Win32 MIDI Driver", &_win32_music_driver, Windows_NT3_51},
{NULL}
};
+byte GetOSVersion()
+{
+ OSVERSIONINFO osvi;
+
+ ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
+ osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+
+ if (GetVersionEx(&osvi)) {
+ DEBUG(misc, 2) ("Windows Version is %d", osvi.dwMajorVersion);
+ return (byte)osvi.dwMajorVersion;
+ }
+
+ // GetVersionEx failed, but we can safely assume at least Win95/WinNT3.51 is used
+ DEBUG(misc, 0) ("Windows version retrieval failed, defaulting to level 4");
+ return Windows_NT3_51;
+}
+
bool FileExists(const char *filename)
{
HANDLE hand = CreateFile(filename, 0, 0, NULL, OPEN_EXISTING, 0, NULL);