(svn r12372) -Fix: win32 music driver fails if path contains non-latin chars

This commit is contained in:
glx 2008-03-15 21:12:08 +00:00
parent 756e0d9b6e
commit 1abd2bd700

View File

@ -46,28 +46,29 @@ void MusicDriver_Win32::SetVolume(byte vol)
SetEvent(_midi.wait_obj); SetEvent(_midi.wait_obj);
} }
static MCIERROR CDECL MidiSendCommand(const char* cmd, ...) static MCIERROR CDECL MidiSendCommand(const TCHAR* cmd, ...)
{ {
va_list va; va_list va;
char buf[512]; TCHAR buf[512];
va_start(va, cmd); va_start(va, cmd);
vsnprintf(buf, lengthof(buf), cmd, va); _vsntprintf(buf, lengthof(buf), cmd, va);
va_end(va); va_end(va);
return mciSendStringA(buf, NULL, 0, 0); return mciSendString(buf, NULL, 0, 0);
} }
static bool MidiIntPlaySong(const char *filename) static bool MidiIntPlaySong(const char *filename)
{ {
MidiSendCommand("close all"); MidiSendCommand(_T("close all"));
if (MidiSendCommand("open \"%s\" type sequencer alias song", filename) != 0) return false;
return MidiSendCommand("play song from 0") == 0; if (MidiSendCommand(_T("open \"%s\" type sequencer alias song"), OTTD2FS(filename)) != 0) return false;
return MidiSendCommand(_T("play song from 0")) == 0;
} }
static void MidiIntStopSong() static void MidiIntStopSong()
{ {
MidiSendCommand("close all"); MidiSendCommand(_T("close all"));
} }
static void MidiIntSetVolume(int vol) static void MidiIntSetVolume(int vol)