From 01a7d6709bf30939d1d54ab3455cf6b5dc5dae58 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 21 Apr 2022 09:02:02 +0200 Subject: [PATCH] modules: don't unload on stream errors It's possible that the stream is sent an error when the session manager can't link the node (because, for example, the sink/source is not available yet). We should not stop but just log this error. When the session manager actively kills the stream (when it is reconnected while the DONT_RECONNECT flag is true) we will end up in the UNCONNECTED state and that's when we can unload the module. --- src/modules/module-echo-cancel.c | 6 ++---- src/modules/module-filter-chain.c | 3 +-- src/modules/module-loopback.c | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/modules/module-echo-cancel.c b/src/modules/module-echo-cancel.c index a646a4efe..0cc880f6d 100644 --- a/src/modules/module-echo-cancel.c +++ b/src/modules/module-echo-cancel.c @@ -406,8 +406,7 @@ static void input_state_changed(void *data, enum pw_stream_state old, pw_impl_module_schedule_destroy(impl->module); break; case PW_STREAM_STATE_ERROR: - pw_log_error("%p: input error: %s", impl, error); - pw_impl_module_schedule_destroy(impl->module); + pw_log_info("%p: input error: %s", impl, error); break; default: break; @@ -479,8 +478,7 @@ static void output_state_changed(void *data, enum pw_stream_state old, pw_impl_module_schedule_destroy(impl->module); break; case PW_STREAM_STATE_ERROR: - pw_log_error("%p: output error: %s", impl, error); - pw_impl_module_schedule_destroy(impl->module); + pw_log_info("%p: output error: %s", impl, error); break; default: break; diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c index 3015e6819..29d362dd5 100644 --- a/src/modules/module-filter-chain.c +++ b/src/modules/module-filter-chain.c @@ -610,8 +610,7 @@ static void state_changed(void *data, enum pw_stream_state old, pw_impl_module_schedule_destroy(impl->module); break; case PW_STREAM_STATE_ERROR: - pw_log_error("module %p: error: %s", impl, error); - pw_impl_module_schedule_destroy(impl->module); + pw_log_info("module %p: error: %s", impl, error); break; default: break; diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c index 22865875d..ccf8f0110 100644 --- a/src/modules/module-loopback.c +++ b/src/modules/module-loopback.c @@ -185,8 +185,7 @@ static void stream_state_changed(void *data, enum pw_stream_state old, pw_impl_module_schedule_destroy(impl->module); break; case PW_STREAM_STATE_ERROR: - pw_log_error("module %p: error: %s", impl, error); - pw_impl_module_schedule_destroy(impl->module); + pw_log_info("module %p: error: %s", impl, error); break; default: break;