diff options
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/backends/pulseaudio.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/Alc/backends/pulseaudio.c b/Alc/backends/pulseaudio.c index 7c961563..b93a90d8 100644 --- a/Alc/backends/pulseaudio.c +++ b/Alc/backends/pulseaudio.c @@ -616,19 +616,19 @@ static ALuint PulseProc(ALvoid *param) { ALCdevice *Device = param; pulse_data *data = Device->ExtraData; - ssize_t len; + size_t len; SetRTPriority(); pa_threaded_mainloop_lock(data->loop); do { - len = (Device->Connected ? pa_stream_writable_size(data->stream) : 0); - len -= len%data->attr.minreq; - if(len == 0) + len = pa_stream_writable_size(data->stream); + if(len < data->attr.minreq) { pa_threaded_mainloop_wait(data->loop); continue; } + len -= len%data->attr.minreq; while(len > 0) { @@ -652,7 +652,7 @@ static ALuint PulseProc(ALvoid *param) pa_stream_write(data->stream, buf, newlen, free_func, 0, PA_SEEK_RELATIVE); len -= newlen; } - } while(Device->Connected && !data->killNow); + } while(!data->killNow && Device->Connected); pa_threaded_mainloop_unlock(data->loop); return 0; |