Lines Matching defs:data

79 pa_sink_new_data* pa_sink_new_data_init(pa_sink_new_data *data) {
80 pa_assert(data);
82 pa_zero(*data);
83 data->proplist = pa_proplist_new();
84 data->ports = pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func, NULL, (pa_free_cb_t) pa_device_port_unref);
86 return data;
89 void pa_sink_new_data_set_name(pa_sink_new_data *data, const char *name) {
90 pa_assert(data);
92 pa_xfree(data->name);
93 data->name = pa_xstrdup(name);
96 void pa_sink_new_data_set_sample_spec(pa_sink_new_data *data, const pa_sample_spec *spec) {
97 pa_assert(data);
99 if ((data->sample_spec_is_set = !!spec))
100 data->sample_spec = *spec;
103 void pa_sink_new_data_set_channel_map(pa_sink_new_data *data, const pa_channel_map *map) {
104 pa_assert(data);
106 if ((data->channel_map_is_set = !!map))
107 data->channel_map = *map;
110 void pa_sink_new_data_set_alternate_sample_rate(pa_sink_new_data *data, const uint32_t alternate_sample_rate) {
111 pa_assert(data);
113 data->alternate_sample_rate_is_set = true;
114 data->alternate_sample_rate = alternate_sample_rate;
117 void pa_sink_new_data_set_avoid_resampling(pa_sink_new_data *data, bool avoid_resampling) {
118 pa_assert(data);
120 data->avoid_resampling_is_set = true;
121 data->avoid_resampling = avoid_resampling;
124 void pa_sink_new_data_set_volume(pa_sink_new_data *data, const pa_cvolume *volume) {
125 pa_assert(data);
127 if ((data->volume_is_set = !!volume))
128 data->volume = *volume;
131 void pa_sink_new_data_set_muted(pa_sink_new_data *data, bool mute) {
132 pa_assert(data);
134 data->muted_is_set = true;
135 data->muted = mute;
138 void pa_sink_new_data_set_port(pa_sink_new_data *data, const char *port) {
139 pa_assert(data);
141 pa_xfree(data->active_port);
142 data->active_port = pa_xstrdup(port);
145 void pa_sink_new_data_done(pa_sink_new_data *data) {
146 pa_assert(data);
148 pa_proplist_free(data->proplist);
150 if (data->ports)
151 pa_hashmap_free(data->ports);
153 pa_xfree(data->name);
154 pa_xfree(data->active_port);
179 pa_sink_new_data *data,
190 pa_assert(data);
191 pa_assert(data->name);
196 if (!(name = pa_namereg_register(core, data->name, PA_NAMEREG_SINK, s, data->namereg_fail))) {
197 pa_log_debug("Failed to register name %s.", data->name);
202 pa_sink_new_data_set_name(data, name);
204 if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_NEW], data) < 0) {
212 pa_return_null_if_fail(!data->driver || pa_utf8_valid(data->driver));
213 pa_return_null_if_fail(data->name && pa_utf8_valid(data->name) && data->name[0]);
215 pa_return_null_if_fail(data->sample_spec_is_set && pa_sample_spec_valid(&data->sample_spec));
217 if (!data->channel_map_is_set)
218 pa_return_null_if_fail(pa_channel_map_init_auto(&data->channel_map, data->sample_spec.channels, PA_CHANNEL_MAP_DEFAULT));
220 pa_return_null_if_fail(pa_channel_map_valid(&data->channel_map));
221 pa_return_null_if_fail(data->channel_map.channels == data->sample_spec.channels);
225 pa_assert(!data->volume_is_set || !(flags & PA_SINK_SHARE_VOLUME_WITH_MASTER));
227 if (!data->volume_is_set) {
228 pa_cvolume_reset(&data->volume, data->sample_spec.channels);
229 data->save_volume = false;
232 pa_return_null_if_fail(pa_cvolume_valid(&data->volume));
233 pa_return_null_if_fail(pa_cvolume_compatible(&data->volume, &data->sample_spec));
235 if (!data->muted_is_set)
236 data->muted = false;
238 if (data->card)
239 pa_proplist_update(data->proplist, PA_UPDATE_MERGE, data->card->proplist);
241 pa_device_init_description(data->proplist, data->card);
242 pa_device_init_icon(data->proplist, true);
243 pa_device_init_intended_roles(data->proplist);
245 if (!data->active_port) {
246 pa_device_port *p = pa_device_port_find_best(data->ports);
248 pa_sink_new_data_set_port(data, p->name);
251 if (pa_hook_fire(&core->hooks[PA_CORE_HOOK_SINK_FIXATE], data) < 0) {
264 s->suspend_cause = data->suspend_cause;
266 s->proplist = pa_proplist_copy(data->proplist);
267 s->driver = pa_xstrdup(pa_path_get_filename(data->driver));
268 s->module = data->module;
269 s->card = data->card;
273 s->sample_spec = data->sample_spec;
274 s->channel_map = data->channel_map;
277 if (data->alternate_sample_rate_is_set)
278 s->alternate_sample_rate = data->alternate_sample_rate;
282 if (data->avoid_resampling_is_set)
283 s->avoid_resampling = data->avoid_resampling;
291 s->reference_volume = s->real_volume = data->volume;
295 s->muted = data->muted;
305 s->ports = data->ports;
306 data->ports = NULL;
311 if (data->active_port)
312 if ((s->active_port = pa_hashmap_get(s->ports, data->active_port)))
313 s->save_port = data->save_port;
325 s->save_volume = data->save_volume;
326 s->save_muted = data->save_muted;
380 source_data.driver = data->driver;
381 source_data.module = data->module;
382 source_data.card = data->card;
463 struct set_state_data data = { .state = state, .suspend_cause = suspend_cause };
465 if ((ret = pa_asyncmsgq_send(s->asyncmsgq, PA_MSGOBJECT(s), PA_SINK_MESSAGE_SET_STATE, &data, 0, NULL)) < 0) {
1048 /* The sink has possibly consumed all the data the sink input provided */
1175 /* Drop read data */
1898 /* We don't copy the soft_volume to the thread_info data
2661 * safely access data outside of thread_info even though
2684 * sink buffer doesn't contain more data than what the new latency
2723 * we can safely access data outside of thread_info even
2839 * the data in the render memblockq will get lost */
2934 struct set_state_data *data = userdata;
2936 (s->thread_info.state == PA_SINK_SUSPENDED && PA_SINK_IS_OPENED(data->state)) ||
2937 (PA_SINK_IS_OPENED(s->thread_info.state) && data->state == PA_SINK_SUSPENDED);
2942 if ((r = s->set_state_in_io_thread(s, data->state, data->suspend_cause)) < 0)
2946 s->thread_info.state = data->state;