diff --git a/pipewire-pulseaudio/src/context.c b/pipewire-pulseaudio/src/context.c index 01b289d30..5eb5a9ff6 100644 --- a/pipewire-pulseaudio/src/context.c +++ b/pipewire-pulseaudio/src/context.c @@ -1923,6 +1923,8 @@ pa_operation* pa_context_drain(pa_context *c, pa_context_notify_cb_t cb, void *u pa_operation *o; struct notify_data *d; + PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE); + o = pa_operation_new(c, NULL, on_notify, sizeof(struct notify_data)); d = o->userdata; d->cb = cb; @@ -1938,6 +1940,8 @@ pa_operation* pa_context_exit_daemon(pa_context *c, pa_context_success_cb_t cb, pa_operation *o; struct success_data *d; + PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE); + o = pa_operation_new(c, NULL, on_success, sizeof(struct success_data)); d = o->userdata; d->error = PA_ERR_NOTIMPLEMENTED; @@ -1994,6 +1998,8 @@ pa_operation* pa_context_set_default_sink(pa_context *c, const char *name, pa_co pa_operation *o; struct default_node *d; + PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE); + o = pa_operation_new(c, NULL, do_default_node, sizeof(*d)); d = o->userdata; d->mask = PA_SUBSCRIPTION_MASK_SINK; @@ -2012,6 +2018,8 @@ pa_operation* pa_context_set_default_source(pa_context *c, const char *name, pa_ pa_operation *o; struct default_node *d; + PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE); + o = pa_operation_new(c, NULL, do_default_node, sizeof(*d)); d = o->userdata; d->mask = PA_SUBSCRIPTION_MASK_SOURCE; diff --git a/pipewire-pulseaudio/src/stream.c b/pipewire-pulseaudio/src/stream.c index 4e7f45d27..a5fe71f77 100644 --- a/pipewire-pulseaudio/src/stream.c +++ b/pipewire-pulseaudio/src/stream.c @@ -660,6 +660,7 @@ static void stream_unlink(pa_stream *s) if (o->stream == s) pa_operation_cancel(o); } + s->drain = NULL; spa_list_remove(&s->link); if (s->stream)