mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
pulse-tunnel: destroy the module on errors
When the pulse context or stream is in error, destroy the module.
This commit is contained in:
parent
9248ce3c19
commit
c20790c64b
1 changed files with 16 additions and 2 deletions
|
|
@ -422,33 +422,47 @@ static int create_stream(struct impl *impl)
|
||||||
static void context_state_cb(pa_context *c, void *userdata)
|
static void context_state_cb(pa_context *c, void *userdata)
|
||||||
{
|
{
|
||||||
struct impl *impl = userdata;
|
struct impl *impl = userdata;
|
||||||
|
bool do_destroy = false;
|
||||||
switch (pa_context_get_state(c)) {
|
switch (pa_context_get_state(c)) {
|
||||||
case PA_CONTEXT_READY:
|
|
||||||
case PA_CONTEXT_TERMINATED:
|
case PA_CONTEXT_TERMINATED:
|
||||||
case PA_CONTEXT_FAILED:
|
case PA_CONTEXT_FAILED:
|
||||||
|
do_destroy = true;
|
||||||
|
SPA_FALLTHROUGH;
|
||||||
|
case PA_CONTEXT_READY:
|
||||||
pa_threaded_mainloop_signal(impl->pa_mainloop, 0);
|
pa_threaded_mainloop_signal(impl->pa_mainloop, 0);
|
||||||
break;
|
break;
|
||||||
case PA_CONTEXT_UNCONNECTED:
|
case PA_CONTEXT_UNCONNECTED:
|
||||||
|
do_destroy = true;
|
||||||
|
break;
|
||||||
case PA_CONTEXT_CONNECTING:
|
case PA_CONTEXT_CONNECTING:
|
||||||
case PA_CONTEXT_AUTHORIZING:
|
case PA_CONTEXT_AUTHORIZING:
|
||||||
case PA_CONTEXT_SETTING_NAME:
|
case PA_CONTEXT_SETTING_NAME:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (do_destroy)
|
||||||
|
pw_impl_module_schedule_destroy(impl->module);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void stream_state_cb(pa_stream *s, void * userdata)
|
static void stream_state_cb(pa_stream *s, void * userdata)
|
||||||
{
|
{
|
||||||
struct impl *impl = userdata;
|
struct impl *impl = userdata;
|
||||||
|
bool do_destroy = false;
|
||||||
switch (pa_stream_get_state(s)) {
|
switch (pa_stream_get_state(s)) {
|
||||||
case PA_STREAM_READY:
|
|
||||||
case PA_STREAM_FAILED:
|
case PA_STREAM_FAILED:
|
||||||
case PA_STREAM_TERMINATED:
|
case PA_STREAM_TERMINATED:
|
||||||
|
do_destroy = true;
|
||||||
|
SPA_FALLTHROUGH;
|
||||||
|
case PA_STREAM_READY:
|
||||||
pa_threaded_mainloop_signal(impl->pa_mainloop, 0);
|
pa_threaded_mainloop_signal(impl->pa_mainloop, 0);
|
||||||
break;
|
break;
|
||||||
case PA_STREAM_UNCONNECTED:
|
case PA_STREAM_UNCONNECTED:
|
||||||
|
do_destroy = true;
|
||||||
|
break;
|
||||||
case PA_STREAM_CREATING:
|
case PA_STREAM_CREATING:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (do_destroy)
|
||||||
|
pw_impl_module_schedule_destroy(impl->module);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void stream_read_request_cb(pa_stream *s, size_t length, void *userdata)
|
static void stream_read_request_cb(pa_stream *s, size_t length, void *userdata)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue