src/music/win32_m.cpp
branchNewGRF_ports
changeset 6720 35756db7e577
parent 6573 7624f942237f
child 6868 7eb395287b3d
equal deleted inserted replaced
6719:4cc327ad39d5 6720:35756db7e577
    13 	HANDLE wait_obj;
    13 	HANDLE wait_obj;
    14 	UINT_PTR devid;
    14 	UINT_PTR devid;
    15 	char start_song[260];
    15 	char start_song[260];
    16 } _midi;
    16 } _midi;
    17 
    17 
    18 static void Win32MidiPlaySong(const char *filename)
    18 static FMusicDriver_Win32 iFMusicDriver_Win32;
       
    19 
       
    20 void MusicDriver_Win32::PlaySong(const char *filename)
    19 {
    21 {
    20 	strcpy(_midi.start_song, filename);
    22 	strcpy(_midi.start_song, filename);
    21 	_midi.playing = true;
    23 	_midi.playing = true;
    22 	_midi.stop_song = false;
    24 	_midi.stop_song = false;
    23 	SetEvent(_midi.wait_obj);
    25 	SetEvent(_midi.wait_obj);
    24 }
    26 }
    25 
    27 
    26 static void Win32MidiStopSong()
    28 void MusicDriver_Win32::StopSong()
    27 {
    29 {
    28 	if (_midi.playing) {
    30 	if (_midi.playing) {
    29 		_midi.stop_song = true;
    31 		_midi.stop_song = true;
    30 		_midi.start_song[0] = '\0';
    32 		_midi.start_song[0] = '\0';
    31 		SetEvent(_midi.wait_obj);
    33 		SetEvent(_midi.wait_obj);
    32 	}
    34 	}
    33 }
    35 }
    34 
    36 
    35 static bool Win32MidiIsSongPlaying()
    37 bool MusicDriver_Win32::IsSongPlaying()
    36 {
    38 {
    37 	return _midi.playing;
    39 	return _midi.playing;
    38 }
    40 }
    39 
    41 
    40 static void Win32MidiSetVolume(byte vol)
    42 void MusicDriver_Win32::SetVolume(byte vol)
    41 {
    43 {
    42 	_midi.new_vol = vol;
    44 	_midi.new_vol = vol;
    43 	SetEvent(_midi.wait_obj);
    45 	SetEvent(_midi.wait_obj);
    44 }
    46 }
    45 
    47 
   116 
   118 
   117 	DeleteObject(_midi.wait_obj);
   119 	DeleteObject(_midi.wait_obj);
   118 	return 0;
   120 	return 0;
   119 }
   121 }
   120 
   122 
   121 static const char *Win32MidiStart(const char * const *parm)
   123 const char *MusicDriver_Win32::Start(const char * const *parm)
   122 {
   124 {
   123 	MIDIOUTCAPS midicaps;
   125 	MIDIOUTCAPS midicaps;
   124 	DWORD threadId;
   126 	DWORD threadId;
   125 	UINT nbdev;
   127 	UINT nbdev;
   126 	UINT_PTR dev;
   128 	UINT_PTR dev;
   144 	if (CreateThread(NULL, 8192, MidiThread, 0, 0, &threadId) == NULL) return "Failed to create thread";
   146 	if (CreateThread(NULL, 8192, MidiThread, 0, 0, &threadId) == NULL) return "Failed to create thread";
   145 
   147 
   146 	return NULL;
   148 	return NULL;
   147 }
   149 }
   148 
   150 
   149 static void Win32MidiStop()
   151 void MusicDriver_Win32::Stop()
   150 {
   152 {
   151 	_midi.terminate = true;
   153 	_midi.terminate = true;
   152 	SetEvent(_midi.wait_obj);
   154 	SetEvent(_midi.wait_obj);
   153 }
   155 }
   154 
       
   155 const HalMusicDriver _win32_music_driver = {
       
   156 	Win32MidiStart,
       
   157 	Win32MidiStop,
       
   158 	Win32MidiPlaySong,
       
   159 	Win32MidiStopSong,
       
   160 	Win32MidiIsSongPlaying,
       
   161 	Win32MidiSetVolume,
       
   162 };