}
} else if (data->route_type == STREAM_ROUTE_TYPE_AUTO_LAST_CONNECTED) {
pa_tz_device *latest_device = NULL;
+ const char *latest_device_type = NULL;
pa_usec_t creation_time = 0;
pa_usec_t latest_creation_time = 0;
continue;
if (!latest_device || (latest_creation_time <= creation_time)) {
+ if (device_type_is_builtin(dm_device_type) && pa_safe_streq(latest_device_type, dm_device_type)) {
+ pa_log_info("%s %s", latest_device_type, dm_device_type);
+ if (data->stream_type == STREAM_SINK_INPUT ?
+ (void*)pa_tz_device_get_sink(latest_device, data->device_role) :
+ (void*)pa_tz_device_get_source(latest_device, data->device_role))
+ continue;
+ }
latest_device = device;
latest_creation_time = creation_time;
+ latest_device_type = dm_device_type;
pa_log_info(" ** updated the last connected device: type[%-16s], direction[0x%x]", dm_device_type, dm_device_direction);
}
}
stream_route_type_t route_type;
const char *device_type = NULL;
pa_tz_device *device = NULL;
- pa_tz_device *latest_device = NULL;
const char *dm_device_type = NULL;
dm_device_direction_t dm_device_direction = DM_DEVICE_DIRECTION_NONE;
pa_sink *sink = NULL;
}
}
} else if (data->route_type == STREAM_ROUTE_TYPE_AUTO_LAST_CONNECTED) {
+ pa_tz_device *latest_device = NULL;
+ const char *latest_device_type = NULL;
pa_usec_t creation_time = 0;
pa_usec_t latest_creation_time = 0;
continue;
}
if (!latest_device || (latest_creation_time <= creation_time)) {
+ if (device_type_is_builtin(dm_device_type) && pa_safe_streq(latest_device_type, dm_device_type)) {
+ if (data->stream_type == STREAM_SINK_INPUT ?
+ (void*)pa_tz_device_get_sink(latest_device, data->device_role) :
+ (void*)pa_tz_device_get_source(latest_device, data->device_role))
+ continue;
+ }
latest_device = device;
latest_creation_time = creation_time;
+ latest_device_type = dm_device_type;
pa_log_info(" ** updated the last connected device: type[%-16s], direction[0x%x]", dm_device_type, dm_device_direction);
}
}
}
}
} else if (route_type == STREAM_ROUTE_TYPE_AUTO_LAST_CONNECTED) {
+ const char *device_role;
PA_IDXSET_FOREACH(device_type, devices, idx) {
- if ((*next_device = pa_device_manager_get_device(m->dm, device_type, NULL))) {
+ device_role = device_type_is_builtin(device_type) ? preferred_device_role : NULL;
+ if ((*next_device = pa_device_manager_get_device(m->dm, device_type, device_role))) {
creation_time = pa_tz_device_get_creation_time(*next_device);
if (!latest_device || (latest_creation_time <= creation_time)) {
latest_device = *next_device;