return;
if (!data->stream)
return;
-
if (!IS_ROLE_COMMUNICATION(data->stream_role))
return;
if (data->stream_type == STREAM_SINK_INPUT) {
if (!(sink = pa_tz_device_get_sink(device, DEVICE_ROLE_NORMAL)) ||
!(dst_sink = pa_tz_device_get_sink(device, device_role)) ||
- sink == dst_sink)
+ sink == dst_sink) {
pa_log_info("[ROUTE][MOVE][%s] no need to move streams, sink(%p), dst_sink(%p)", data->stream_role, sink, dst_sink);
- else
- streams = sink->inputs;
+ return;
+ }
+ streams = sink->inputs;
} else if (data->stream_type == STREAM_SOURCE_OUTPUT) {
if (!(source = pa_tz_device_get_source(device, DEVICE_ROLE_NORMAL)) ||
!(dst_source = pa_tz_device_get_source(device, device_role)) ||
- source == dst_source)
+ source == dst_source) {
pa_log_info("[ROUTE][MOVE][%s] no need to move streams, source(%p), dst_source(%p)", data->stream_role, source, dst_source);
- else
- streams = source->outputs;
+ return;
+ }
+ streams = source->outputs;
}
- if (!streams)
+ if (!streams || (pa_idxset_size(streams) == 0))
return;
/* move other streams that belong to the device of NORMAL role */
/* if it's from new_data, return here */
if (!device || data->origins_from_new_data)
return;
- if (!data->stream || !data->idx_streams)
+ if (!data->stream || !data->idx_streams || pa_idxset_size(data->idx_streams) == 0)
return;
if (!IS_AUTO_ROUTE_TYPE_SERIES(data->route_type))
return;
if (data->stream_type == STREAM_SINK_INPUT) {
if (!(sink = pa_tz_device_get_sink(device, data->device_role)))
return;
+ pa_sink_suspend(sink, false, PA_SUSPEND_INTERNAL);
} else if (data->stream_type == STREAM_SOURCE_OUTPUT) {
if (!(source = pa_tz_device_get_source(device, data->device_role)))
return;
+ pa_source_suspend(source, false, PA_SUSPEND_INTERNAL);
}
PA_IDXSET_FOREACH(s, data->idx_streams, idx) {