module: handle error and unconnected states

Unload the module on error/unconnected
This commit is contained in:
Wim Taymans 2022-04-20 19:33:18 +02:00
parent 26471ff2da
commit f205a09ade
2 changed files with 24 additions and 0 deletions

View file

@ -401,6 +401,14 @@ static void input_state_changed(void *data, enum pw_stream_state old,
pw_stream_flush(impl->source, false); pw_stream_flush(impl->source, false);
pw_stream_flush(impl->capture, false); pw_stream_flush(impl->capture, false);
break; break;
case PW_STREAM_STATE_UNCONNECTED:
pw_log_info("%p: input unconnected", impl);
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);
break;
default: default:
break; break;
} }
@ -466,6 +474,14 @@ static void output_state_changed(void *data, enum pw_stream_state old,
pw_stream_flush(impl->sink, false); pw_stream_flush(impl->sink, false);
pw_stream_flush(impl->playback, false); pw_stream_flush(impl->playback, false);
break; break;
case PW_STREAM_STATE_UNCONNECTED:
pw_log_info("%p: output unconnected", impl);
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);
break;
default: default:
break; break;
} }

View file

@ -605,6 +605,14 @@ static void state_changed(void *data, enum pw_stream_state old,
pw_stream_flush(impl->capture, false); pw_stream_flush(impl->capture, false);
graph_reset(graph); graph_reset(graph);
break; break;
case PW_STREAM_STATE_UNCONNECTED:
pw_log_info("module %p: unconnected", impl);
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);
break;
default: default:
break; break;
} }