equal
deleted
inserted
replaced
19 static struct { |
19 static struct { |
20 char song[MAX_PATH]; |
20 char song[MAX_PATH]; |
21 pid_t pid; |
21 pid_t pid; |
22 } _midi; |
22 } _midi; |
23 |
23 |
24 static void DoPlay(void); |
24 static void DoPlay(); |
25 static void DoStop(void); |
25 static void DoStop(); |
26 |
26 |
27 static const char* ExtMidiStart(const char* const * parm) |
27 static const char* ExtMidiStart(const char* const * parm) |
28 { |
28 { |
29 _midi.song[0] = '\0'; |
29 _midi.song[0] = '\0'; |
30 _midi.pid = -1; |
30 _midi.pid = -1; |
31 return NULL; |
31 return NULL; |
32 } |
32 } |
33 |
33 |
34 static void ExtMidiStop(void) |
34 static void ExtMidiStop() |
35 { |
35 { |
36 _midi.song[0] = '\0'; |
36 _midi.song[0] = '\0'; |
37 DoStop(); |
37 DoStop(); |
38 } |
38 } |
39 |
39 |
41 { |
41 { |
42 ttd_strlcpy(_midi.song, filename, lengthof(_midi.song)); |
42 ttd_strlcpy(_midi.song, filename, lengthof(_midi.song)); |
43 DoStop(); |
43 DoStop(); |
44 } |
44 } |
45 |
45 |
46 static void ExtMidiStopSong(void) |
46 static void ExtMidiStopSong() |
47 { |
47 { |
48 _midi.song[0] = '\0'; |
48 _midi.song[0] = '\0'; |
49 DoStop(); |
49 DoStop(); |
50 } |
50 } |
51 |
51 |
52 static bool ExtMidiIsPlaying(void) |
52 static bool ExtMidiIsPlaying() |
53 { |
53 { |
54 if (_midi.pid != -1 && waitpid(_midi.pid, NULL, WNOHANG) == _midi.pid) |
54 if (_midi.pid != -1 && waitpid(_midi.pid, NULL, WNOHANG) == _midi.pid) |
55 _midi.pid = -1; |
55 _midi.pid = -1; |
56 if (_midi.pid == -1 && _midi.song[0] != '\0') DoPlay(); |
56 if (_midi.pid == -1 && _midi.song[0] != '\0') DoPlay(); |
57 return _midi.pid != -1; |
57 return _midi.pid != -1; |
60 static void ExtMidiSetVolume(byte vol) |
60 static void ExtMidiSetVolume(byte vol) |
61 { |
61 { |
62 DEBUG(driver, 1, "extmidi: set volume not implemented"); |
62 DEBUG(driver, 1, "extmidi: set volume not implemented"); |
63 } |
63 } |
64 |
64 |
65 static void DoPlay(void) |
65 static void DoPlay() |
66 { |
66 { |
67 _midi.pid = fork(); |
67 _midi.pid = fork(); |
68 switch (_midi.pid) { |
68 switch (_midi.pid) { |
69 case 0: { |
69 case 0: { |
70 int d; |
70 int d; |
89 _midi.song[0] = '\0'; |
89 _midi.song[0] = '\0'; |
90 break; |
90 break; |
91 } |
91 } |
92 } |
92 } |
93 |
93 |
94 static void DoStop(void) |
94 static void DoStop() |
95 { |
95 { |
96 if (_midi.pid != -1) kill(_midi.pid, SIGTERM); |
96 if (_midi.pid != -1) kill(_midi.pid, SIGTERM); |
97 } |
97 } |
98 |
98 |
99 const HalMusicDriver _extmidi_music_driver = { |
99 const HalMusicDriver _extmidi_music_driver = { |