aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
Diffstat (limited to 'Alc')
-rw-r--r--Alc/pulseaudio.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/Alc/pulseaudio.c b/Alc/pulseaudio.c
index a20e73fb..42ed84f3 100644
--- a/Alc/pulseaudio.c
+++ b/Alc/pulseaudio.c
@@ -229,15 +229,13 @@ static void context_state_callback(pa_context *context, void *pdata) //{{{
pa_context_state_t state;
state = ppa_context_get_state(context);
- if(state == PA_CONTEXT_READY)
+ if(state == PA_CONTEXT_READY || !PA_CONTEXT_IS_GOOD(state))
{
if(ppa_threaded_mainloop_in_thread(data->loop))
ppa_threaded_mainloop_signal(data->loop, 1);
else
ppa_threaded_mainloop_signal(data->loop, 0);
}
- else if(!PA_CONTEXT_IS_GOOD(state))
- ppa_threaded_mainloop_signal(data->loop, 0);
}//}}}
static void stream_state_callback(pa_stream *stream, void *pdata) //{{{
@@ -247,15 +245,13 @@ static void stream_state_callback(pa_stream *stream, void *pdata) //{{{
pa_stream_state_t state;
state = ppa_stream_get_state(stream);
- if(state == PA_STREAM_READY)
+ if(state == PA_STREAM_READY || !PA_STREAM_IS_GOOD(state))
{
if(ppa_threaded_mainloop_in_thread(data->loop))
ppa_threaded_mainloop_signal(data->loop, 1);
else
ppa_threaded_mainloop_signal(data->loop, 0);
}
- else if(!PA_STREAM_IS_GOOD(state))
- ppa_threaded_mainloop_signal(data->loop, 0);
}//}}}
static void stream_buffer_attr_callback(pa_stream *stream, void *pdata) //{{{
@@ -400,6 +396,7 @@ static ALCboolean pulse_open(ALCdevice *device, const ALCchar *device_name) //{{
ppa_context_unref(data->context);
data->context = NULL;
+ ppa_threaded_mainloop_accept(data->loop);
ppa_threaded_mainloop_unlock(data->loop);
goto out;
}
@@ -591,6 +588,7 @@ static ALCboolean pulse_reset_playback(ALCdevice *device) //{{{
ppa_stream_unref(data->stream);
data->stream = NULL;
+ ppa_threaded_mainloop_accept(data->loop);
ppa_threaded_mainloop_unlock(data->loop);
return ALC_FALSE;
}
@@ -733,9 +731,11 @@ static ALCboolean pulse_open_capture(ALCdevice *device, const ALCchar *device_na
ppa_strerror(ppa_context_errno(data->context)));
ppa_stream_unref(data->stream);
+ data->stream = NULL;
+
+ ppa_threaded_mainloop_accept(data->loop);
ppa_threaded_mainloop_unlock(data->loop);
- data->stream = NULL;
pulse_close(device);
pulse_unload();
return ALC_FALSE;