On Fri, 2014-03-21 at 10:27 +0100, David Henningsson wrote: > In case a port has not yet been saved, which is e g often the case > if a sink/source has only one port, reading volume/mute will be done > without port, whereas writing volume/mute will be done with port. > > Work around this by setting a default port before the fixate hook, > so module-device-restore can read volume/mute for the correct port. > > BugLink: https://bugs.launchpad.net/bugs/1289515 > Signed-off-by: David Henningsson <david.hennings...@canonical.com>
Thanks, this also fixes this bug: https://bugs.freedesktop.org/show_bug.cgi?id=55262 A couple of comments below. > --- > src/pulsecore/sink.c | 11 +++++++++++ > src/pulsecore/source.c | 11 +++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c > index 08143e9..9c4b0c3 100644 > --- a/src/pulsecore/sink.c > +++ b/src/pulsecore/sink.c > @@ -235,6 +235,17 @@ pa_sink* pa_sink_new( > pa_device_init_icon(data->proplist, true); > pa_device_init_intended_roles(data->proplist); > > + if (!data->active_port && !data->save_port) { How is data->save_port relevant here? If active_port is NULL, save_port should always be false (true wouldn't have any meaning). > + void *state; > + pa_device_port *p, *p2 = NULL; > + > + PA_HASHMAP_FOREACH(p, data->ports, state) > + if (!p2 || p->priority > p2->priority) { > + p2 = p; > + pa_sink_new_data_set_port(data, p2->name); I'd prefer calling pa_sink_new_data_set_port() only once, i.e. outside the loop. > + } > + } This partially duplicates the code that is run later: if (!s->active_port) { void *state; pa_device_port *p; PA_HASHMAP_FOREACH(p, s->ports, state) { if (p->available == PA_AVAILABLE_NO) continue; if (!s->active_port || p->priority > s->active_port->priority) s->active_port = p; } if (!s->active_port) { PA_HASHMAP_FOREACH(p, s->ports, state) if (!s->active_port || p->priority > s->active_port->priority) s->active_port = p; } } I think we should do the fallback port initialization only once, in the location where you added the new code. We should use the full logic of the old fallback initialization code. -- Tanu ** Bug watch added: freedesktop.org Bugzilla #55262 https://bugs.freedesktop.org/show_bug.cgi?id=55262 -- You received this bug notification because you are a member of Desktop Packages, which is subscribed to pulseaudio in Ubuntu. https://bugs.launchpad.net/bugs/1289515 Title: Sound volume resets after making a call Status in “pulseaudio” package in Ubuntu: Incomplete Bug description: 1. mute your phone 2. dial a number and ensure the call is picked 3. end the call What happens: The sound volume is set to full and the phone unmutes What should happen: Ending the call should not effect the sound volume setting. ProblemType: Bug DistroRelease: Ubuntu 14.04 Package: telephony-service 0.1+14.04.20140303-0ubuntu1 Uname: Linux 3.4.0-5-mako armv7l ApportVersion: 2.13.2-0ubuntu5 Architecture: armhf Date: Fri Mar 7 23:26:43 2014 InstallationDate: Installed on 2014-03-07 (0 days ago) InstallationMedia: Ubuntu Trusty Tahr (development branch) - armhf (20140307.2) ProcEnviron: TERM=linux PATH=(custom, no user) SourcePackage: telephony-service UpgradeStatus: No upgrade log present (probably fresh install) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/1289515/+subscriptions -- Mailing list: https://launchpad.net/~desktop-packages Post to : desktop-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp