mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-20 06:59:58 -05:00
stream: data_loop is NULL when not connected
When there is no node (not connected) the data_loop should remain NULL.
This commit is contained in:
parent
784f003068
commit
9ba3792038
2 changed files with 12 additions and 2 deletions
|
|
@ -1448,7 +1448,10 @@ do_remove_callbacks(struct spa_loop *loop,
|
||||||
static void hook_removed(struct spa_hook *hook)
|
static void hook_removed(struct spa_hook *hook)
|
||||||
{
|
{
|
||||||
struct filter *impl = hook->priv;
|
struct filter *impl = hook->priv;
|
||||||
|
if (impl->data_loop)
|
||||||
pw_loop_invoke(impl->data_loop, do_remove_callbacks, 1, NULL, 0, true, impl);
|
pw_loop_invoke(impl->data_loop, do_remove_callbacks, 1, NULL, 0, true, impl);
|
||||||
|
else
|
||||||
|
spa_zero(impl->rt_callbacks);
|
||||||
hook->priv = NULL;
|
hook->priv = NULL;
|
||||||
hook->removed = NULL;
|
hook->removed = NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -1541,8 +1544,10 @@ int pw_filter_update_properties(struct pw_filter *filter, void *port_data, const
|
||||||
static void node_event_destroy(void *data)
|
static void node_event_destroy(void *data)
|
||||||
{
|
{
|
||||||
struct pw_filter *filter = data;
|
struct pw_filter *filter = data;
|
||||||
|
struct filter *impl = SPA_CONTAINER_OF(filter, struct filter, this);
|
||||||
spa_hook_remove(&filter->node_listener);
|
spa_hook_remove(&filter->node_listener);
|
||||||
filter->node = NULL;
|
filter->node = NULL;
|
||||||
|
impl->data_loop = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct pw_impl_node_events node_events = {
|
static const struct pw_impl_node_events node_events = {
|
||||||
|
|
|
||||||
|
|
@ -1344,8 +1344,10 @@ static int node_event_param(void *object, int seq,
|
||||||
static void node_event_destroy(void *data)
|
static void node_event_destroy(void *data)
|
||||||
{
|
{
|
||||||
struct pw_stream *stream = data;
|
struct pw_stream *stream = data;
|
||||||
|
struct stream *impl = SPA_CONTAINER_OF(stream, struct stream, this);
|
||||||
spa_hook_remove(&stream->node_listener);
|
spa_hook_remove(&stream->node_listener);
|
||||||
stream->node = NULL;
|
stream->node = NULL;
|
||||||
|
impl->data_loop = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void node_event_info(void *data, const struct pw_node_info *info)
|
static void node_event_info(void *data, const struct pw_node_info *info)
|
||||||
|
|
@ -1707,7 +1709,10 @@ do_remove_callbacks(struct spa_loop *loop,
|
||||||
static void hook_removed(struct spa_hook *hook)
|
static void hook_removed(struct spa_hook *hook)
|
||||||
{
|
{
|
||||||
struct stream *impl = hook->priv;
|
struct stream *impl = hook->priv;
|
||||||
|
if (impl->data_loop)
|
||||||
pw_loop_invoke(impl->data_loop, do_remove_callbacks, 1, NULL, 0, true, impl);
|
pw_loop_invoke(impl->data_loop, do_remove_callbacks, 1, NULL, 0, true, impl);
|
||||||
|
else
|
||||||
|
spa_zero(impl->rt_callbacks);
|
||||||
hook->priv = NULL;
|
hook->priv = NULL;
|
||||||
hook->removed = NULL;
|
hook->removed = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue