Mercurial > audlegacy-plugins
comparison src/psf2/plugin.c @ 2750:6319a15e7243
Plugin is mostly usable now.
| author | William Pitcock <nenolod@atheme.org> |
|---|---|
| date | Mon, 30 Jun 2008 23:39:49 -0500 |
| parents | 290357060cdb |
| children | 533d73cfa1ff |
comparison
equal
deleted
inserted
replaced
| 2749:290357060cdb | 2750:6319a15e7243 |
|---|---|
| 172 while (data->playing) | 172 while (data->playing) |
| 173 { | 173 { |
| 174 psf2_execute(data); | 174 psf2_execute(data); |
| 175 } | 175 } |
| 176 | 176 |
| 177 psf2_stop(); | |
| 178 | |
| 179 data->output->buffer_free(); | |
| 180 data->output->buffer_free(); | |
| 181 | |
| 182 data->output->close_audio(); | |
| 183 | |
| 177 g_free(buffer); | 184 g_free(buffer); |
| 178 g_free(path); | 185 g_free(path); |
| 179 g_free(title); | 186 g_free(title); |
| 187 | |
| 188 data->playing = FALSE; | |
| 180 } | 189 } |
| 181 | 190 |
| 182 void psf2_update(unsigned char *buffer, long count, InputPlayback *playback) | 191 void psf2_update(unsigned char *buffer, long count, InputPlayback *playback) |
| 183 { | 192 { |
| 184 const int mask = ~((((16 / 8) * 2)) - 1); | 193 const int mask = ~((((16 / 8) * 2)) - 1); |
| 194 | |
| 195 if (buffer == NULL) | |
| 196 { | |
| 197 playback->playing = FALSE; | |
| 198 playback->eof = TRUE; | |
| 199 | |
| 200 return; | |
| 201 } | |
| 185 | 202 |
| 186 while (count > 0) | 203 while (count > 0) |
| 187 { | 204 { |
| 188 int t = playback->output->buffer_free() & mask; | 205 int t = playback->output->buffer_free() & mask; |
| 189 if (t > count) | 206 if (t > count) |
