equal
deleted
inserted
replaced
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 }; |
|