if (!(rname = pa_alsa_get_reserve_name(dname)))
return 0;
+ /* We are resuming, try to lock the device */
u->monitor = pa_reserve_monitor_wrapper_get(u->core, rname);
pa_xfree(rname);
pa_usec_t volume_sleep;
pa_sink_volume_change_apply(u->sink, &volume_sleep);
if (volume_sleep > 0)
- rtpoll_sleep = MIN(volume_sleep, rtpoll_sleep);
+ rtpoll_sleep = PA_MIN(volume_sleep, rtpoll_sleep);
}
if (rtpoll_sleep > 0)
SND_PCM_STREAM_PLAYBACK,
&period_frames, &buffer_frames, tsched_frames,
&b, &d, mapping)))
-
goto fail;
} else if ((dev_id = pa_modargs_get_value(ma, "device_id", NULL))) {
SND_PCM_STREAM_PLAYBACK,
&period_frames, &buffer_frames, tsched_frames,
&b, &d, profile_set, &mapping)))
-
goto fail;
} else {
!pa_sample_spec_equal(&i->sample_spec, &dest->sample_spec) ||
!pa_channel_map_equal(&i->channel_map, &dest->channel_map)) {
- /* Okey, we need a new resampler for the new sink */
+ /* Okay, we need a new resampler for the new sink */
if (!(new_resampler = pa_resampler_new(
i->core->mempool,
&i->sink->silence);
i->actual_resample_method = new_resampler ? pa_resampler_get_method(new_resampler) : PA_RESAMPLER_INVALID;
}
+
pa_sink_update_status(dest);
update_volume_due_to_moving(i, dest);
/* Notify everyone */
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_MOVE_FINISH], i);
-
pa_subscription_post(i->core, PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE, i->index);
return 0;
pa_bool_t muted:1;
- /* if TRUE then the source we are connected to and/or the volume
+ /* if TRUE then the sink we are connected to and/or the volume
* set is worth remembering, i.e. was explicitly chosen by the
* user and not automatically. module-stream-restore looks for
* this.*/
/* Called from the io thread if sync volume is used, otherwise from the main thread.
* Only to be called by sink implementor */
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume) {
+
pa_sink_assert_ref(s);
pa_assert(!(s->flags & PA_SINK_SHARE_VOLUME_WITH_MASTER));
+
if (s->flags & PA_SINK_SYNC_VOLUME)
pa_sink_assert_io_context(s);
else
/* Checks if the sink can accept this format */
pa_bool_t pa_sink_check_format(pa_sink *s, pa_format_info *f)
{
- pa_idxset *sink_formats = NULL;
- pa_format_info *f_sink;
- uint32_t i;
+ pa_idxset *formats = NULL;
pa_bool_t ret = FALSE;
pa_assert(s);
pa_assert(f);
- sink_formats = pa_sink_get_formats(s);
+ formats = pa_sink_get_formats(s);
- PA_IDXSET_FOREACH(f_sink, sink_formats, i) {
- if (pa_format_info_is_compatible(f_sink, f)) {
- ret = TRUE;
- break;
+ if (formats) {
+ pa_format_info *finfo_device;
+ uint32_t i;
+
+ PA_IDXSET_FOREACH(finfo_device, formats, i) {
+ if (pa_format_info_is_compatible(finfo_device, f)) {
+ ret = TRUE;
+ break;
+ }
}
- }
- if (sink_formats)
- pa_idxset_free(sink_formats, (pa_free2_cb_t) pa_format_info_free2, NULL);
+ pa_idxset_free(formats, (pa_free2_cb_t) pa_format_info_free2, NULL);
+ }
return ret;
}