(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).

This commit is contained in:
darkvater
2004-09-12 22:03:14 +00:00
parent e295e46e3e
commit 989ed101bc
8 changed files with 61 additions and 19 deletions

50
win32.c
View File

@@ -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);