On Fri, Jan 11, 2013 at 04:13:18PM +0100, David Henningsson wrote: > On 01/05/2013 12:19 AM, poljar (Damir Jeli?) wrote: > >Since the port now holds the volume information we can simply inherit > >the volume from the active port if the volume isn't set while creating > >the sink. > > Here's where it gets tricky: sinks are having a massive amount of > volumes, so I have difficulties telling all them apart. But I hope > you're doing the right thing :-) > More eyes would be welcome here, I'm not sure either. :P > > > >BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=55262 > >--- > > src/pulsecore/sink.c | 14 +++++++++++--- > > 1 file changed, 11 insertions(+), 3 deletions(-) > > > >diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c > >index a8a91d6..37cabb6 100644 > >--- a/src/pulsecore/sink.c > >+++ b/src/pulsecore/sink.c > >@@ -276,7 +276,6 @@ pa_sink* pa_sink_new( > > s->n_corked = 0; > > s->input_to_master = NULL; > > > >- s->reference_volume = s->real_volume = data->volume; > > pa_cvolume_reset(&s->soft_volume, s->sample_spec.channels); > > s->base_volume = PA_VOLUME_NORM; > > s->n_volume_steps = PA_VOLUME_NORM+1; > >@@ -309,10 +308,18 @@ pa_sink* pa_sink_new( > > s->active_port = p; > > } > > > >- if (s->active_port) > >+ if (s->active_port) { > > s->latency_offset = s->active_port->latency_offset; > >- else > >+ > >+ if (pa_cvolume_valid(&s->active_port->volume) && !data->volume_is_set) > >+ s->reference_volume = s->real_volume = s->active_port->volume; > >+ else > >+ s->reference_volume = s->real_volume = data->volume; > >+ > >+ } else { > > s->latency_offset = 0; > >+ s->reference_volume = s->real_volume = data->volume; > >+ } > > > > s->save_volume = data->save_volume; > > s->save_muted = data->save_muted; > >@@ -1976,6 +1983,7 @@ void pa_sink_set_volume( > > } > > > > pa_cvolume_remap(&new_reference_volume, &s->channel_map, &root_sink->channel_map); > >+ pa_device_port_set_volume(s->active_port, new_reference_volume); > > Hmm, are we really guaranteed that (s->active_port != NULL) here? I > don't think so. > Yes that's a good catch. Will fix it.