diff --git a/src/pipewire/filter.c b/src/pipewire/filter.c index bb23c9d5c..a5b98f5b7 100644 --- a/src/pipewire/filter.c +++ b/src/pipewire/filter.c @@ -1159,6 +1159,9 @@ static void on_core_error(void *_data, uint32_t id, int seq, int res, const char if (id == PW_ID_CORE && res == -EPIPE) { filter_set_state(filter, PW_FILTER_STATE_UNCONNECTED, res, message); + } else if (id == PW_ID_CORE && res == -EPROTO) { + pw_filter_set_active(filter, false); + filter_set_state(filter, PW_FILTER_STATE_ERROR, res, message); } } diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index 477861f61..7b4102c5d 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -1508,6 +1508,9 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char if (id == PW_ID_CORE && res == -EPIPE) { stream_set_state(stream, PW_STREAM_STATE_UNCONNECTED, res, message); + } else if (id == PW_ID_CORE && res == -EPROTO) { + pw_stream_set_active(stream, false); + stream_set_state(stream, PW_STREAM_STATE_ERROR, res, message); } }