pa_assert(formats);
if (data->req_formats)
- pa_idxset_free(formats, (pa_free_cb_t) pa_format_info_free);
+ pa_idxset_free(data->req_formats, (pa_free_cb_t) pa_format_info_free);
data->req_formats = formats;
pa_return_val_if_fail(sink, -PA_ERR_NOENTITY);
pa_sink_input_new_data_set_sink(data, sink, false);
}
- /* Routing's done, we have a sink. Now let's fix the format and set up the
- * sample spec */
+
+ pa_return_val_if_fail(PA_SINK_IS_LINKED(pa_sink_get_state(data->sink)), -PA_ERR_BADSTATE);
+ pa_return_val_if_fail(!data->sync_base || (data->sync_base->sink == data->sink
+ && pa_sink_input_get_state(data->sync_base) == PA_SINK_INPUT_CORKED),
+ -PA_ERR_INVALID);
+
+ /* Routing's done, we have a sink. Now let's fix the format. */
/* If something didn't pick a format for us, pick the top-most format since
* we assume this is sorted in priority order */
if (pa_format_info_is_pcm(data->format) && pa_channel_map_valid(&map))
pa_sink_input_new_data_set_channel_map(data, &map);
- pa_return_val_if_fail(PA_SINK_IS_LINKED(pa_sink_get_state(data->sink)), -PA_ERR_BADSTATE);
- pa_return_val_if_fail(!data->sync_base || (data->sync_base->sink == data->sink && pa_sink_input_get_state(data->sync_base) == PA_SINK_INPUT_CORKED), -PA_ERR_INVALID);
r = check_passthrough_connection(pa_sink_input_new_data_is_passthrough(data), data->sink);
if (r != PA_OK)
i->volume_factor_sink_items = data->volume_factor_sink_items;
data->volume_factor_sink_items = NULL;
- volume_factor_from_hashmap(&i->volume_factor_sink, i->volume_factor_sink_items, i->sample_spec.channels);
+ volume_factor_from_hashmap(&i->volume_factor_sink, i->volume_factor_sink_items, i->sink->sample_spec.channels);
i->real_ratio = i->reference_ratio = data->volume;
pa_cvolume_reset(&i->soft_volume, i->sample_spec.channels);
if (PA_SINK_INPUT_IS_LINKED(i->state))
pa_sink_input_unlink(i);
- pa_log_info("Freeing input %u \"%s\"", i->index, pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME)));
+ pa_log_info("Freeing input %u \"%s\"", i->index,
+ i->proplist ? pa_strnull(pa_proplist_gets(i->proplist, PA_PROP_MEDIA_NAME)) : "");
/* Side note: this function must be able to destruct properly any
* kind of sink input in any state, even those which are