mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
context: protect against bad context state
Avoid crash in firefox when daemon is stopped.
This commit is contained in:
parent
42e60b66f3
commit
732bf4b58c
2 changed files with 9 additions and 0 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue