summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-02-18reserve: Fix leaking NameLost signals after release+acquirestable-3.xMikel Astiz1-0/+17
The use of the pseudo-blocking D-Bus calls leads to the problem that NameLost signals are received after the reply to ReleaseName(). The problem with this is that a later acquisition of the same audio device can potentially receive the NameLost signal corresponding to the previous instance, due to the fact that the signal hasn't been popped from the D-Bus message queue. The simplest approach to solve this problem is to poll the actual name owner from the D-Bus daemon, in order to make sure that we did really lose the name. The proposal uses a blocking call to GetNameOwner to avoid incosistent states in the internal APIs: it would otherwise be possible to have a "busy" device before the reservation has been lost, in the unlikely case if some other process acquires the name before we got the confirmation that the NameLost was actually true.
2013-02-18reserve: Move get_name_owner() to the public rd_device APIMikel Astiz3-57/+67
The function is interesting for both rd_device and rd_monitor so make it part of the rd_device public API to avoid duplicated code. The decision to move the function to reserve.c is motivated by the fact that other projects (i.e. jack) use reserve.c only. Therefore, adding a reserve->reserve-monitor dependency should be avoided.
2013-01-17Initialize monitor's busy status to false if we own the device.Tanu Kaskinen1-16/+80
Bug found by David Henningsson.
2013-01-17Call change_cb() only when there's an actual change.Tanu Kaskinen1-1/+3
Calling change_cb() whenever anything happens in the ownership of the bus name caused trouble in PulseAudio in this scenario: 1. PulseAudio is using a device and owns the corresponding service name. 2. Another application requests device release. 3. PulseAudio releases the device. 4. Change in the bus name ownership: PulseAudio gives up the ownership, and nobody owns the name. 5. reserve-monitor notices that, and notifies PulseAudio. 6. Since reserve-monitor reports the device as "not busy", PulseAudio decides to reserve the bus name immediately back to itself and opens the device again. The other application will forcibly take the bus name to itself, as it should according to the protocol, but the other application may have trouble opening the device if it tries to do that before PulseAudio has had time to react to the NameLost signal. This can be solved by not calling change_cb() if there are no changes in the device busy status. In this scenario the device is considered "not busy" while PulseAudio is owning the bus name, so PulseAudio gets no notification when the ownership changes from PulseAudio to nobody.
2012-12-20build: Don't enable BlueZ if libbluetooth is not found.Tanu Kaskinen1-2/+3
Previously, if libsbc was available but libbluetooth was not, BlueZ would get incorrectly enabled.
2012-12-20man: Update log-target documentation.Tanu Kaskinen2-8/+14
2012-12-20alsa-mixer: Fix the analog-output-speaker-always pathDavid Henningsson1-1/+4
A left over "required-any" made this path useless for most people. While we're at it, also add "Front Headphone" like for the normal speaker path. Tested-by: Colin Guthrie <gmane@colin.guthr.ie> Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-12-17build-sys: Bump sonamev3.0Arun Raghavan1-1/+1
2012-12-07alsa-mixer: Add device.icon-name property for some common portsDavid Henningsson10-0/+30
If we expose this information, UIs can use this to make better decisions about what icon to display. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-12-07build-sys: Bump sonamev2.99.3Arun Raghavan1-1/+1
2012-12-05alsa-mixer: Add Dell Inspiron One 2020 to mic whitelistDavid Henningsson1-0/+2
BugLink: https://bugs.launchpad.net/bugs/1073420 Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-12-05alsa udev quirks: Add some more Dell devices to speaker whitelistDavid Henningsson1-0/+8
Added Dell Inspiron 3420, 3520 and Vostro 2420, 2520. Note that this is only necessary for kernels 3.3 to 3.5, as 3.6 has phantom jack support. BugLink: https://bugs.launchpad.net/bugs/1076840 Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-12-05alsa: Try to support non-standard rates in alsa-sink/sourceArun Raghavan4-12/+22
We inadvertantly stopped supporting non-standard rates when the passthrough work was done. This makes sure that if no standard rates are supported, we try to fallback to whatever ALSA gives us.
2012-12-05bluetooth: Fix unacquired transports during sink resumeMikel Astiz1-2/+2
The sink can be resumed while the source is still in PA_SOURCE_INIT. This is the case if a module such as module-stream-restore routes the audio to the sink during pa_sink_put(), leading to an inconsistent state: the sink stays RUNNING but the transport is not actually acquired.
2012-12-04bluetooth: Request headset audio during profile switchMikel Astiz1-3/+6
When a headset is having a profile switch, we can either leave the SCO state unmodified (as it was before this patch) or we can alternatively request it (as older versions of PA). This patch tries to avoid a potential regression in case a module such as module-suspend-on-idle is not present, due to the provided resume-on-running policy. Without this patch, and without such a policy, the sink and sources would stay suspended until the user manually performed another profile switch (i.e. hsp->off->hsp). There are several other solutions currently being discussed as a longer term solution, some of which require extendind the core. This patch is therefore proposed as a short-term workaround to avoid the regression.
2012-12-04bluetooth: Do not setup stream before thread startsMikel Astiz1-0/+4
bt_transport_acquire() might get called from the main thread, in case the IO thread hasn't been started yet. In this case, we should not call setup_stream() since this is going to be called in the beginning of thread_func().
2012-12-04bluetooth: Trivially refactor to call setup_stream() directlyMikel Astiz1-2/+3
If the transport is already acquired and the stream needs to be started, call setup_stream() directly instead of bt_transport_acquire(u, TRUE). Both calls are identical in these conditions, with the exception of the log trace which has now been moved to setup_stream().
2012-11-29conf: Load bluetooth-policy module by defaultMikel Astiz1-0/+4
Headset use-cases shouldn't get affected by this module and the support for A2DP source is interesting, therefore load the module by default.
2012-11-29bluetooth: Disable profile auto-switch policy for headsetsMikel Astiz1-0/+4
Given that headsets have just one single port exposing whether the audio is streaming (playing) or not, it's not possible that module-bluetooth-policy would distinguish A2DP/HSP cases, and thus the automatic selection of the card profile is not deterministic. For this reason, disable the policy entirely for headsets and focus only on HFGW and A2DP source profiles.
2012-11-29bluetooth: Merge headset ports into oneMikel Astiz1-20/+52
Merge the former "hsp-output" and "a2dp-output" ports into one single port, in order to fix the regression of having several independent entries in the UI.
2012-11-29virtual-surround: check if resampled memblock is not equal to inputNiels Ole Salscheider1-2/+4
Since commit e32a408b3cdd46857fdf12210c1bf5bdbf3a96f8, we silence the input memblock in order to give the resampler enough input samples, if necessary. But if there is no need to resample the hrir, the resampled memblock is actually the same as the input memblock. Thus, we have to make sure that we do not silence it in this case.
2012-11-23bluetooth: Unload device module when no audio profiles connectedTanu Kaskinen1-3/+25
Without this patch, device modules will be left around after the device has been disconnected and when they are reconnected, the discovery module will load duplicate device module instances. BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=57239
2012-11-23bluetooth: Run the discovery hook only when necessaryMikel Astiz1-2/+8
This is a minor optimization too, but the main benefit is that it's makes the code easier to understand (I hope), since run_callback() won't be called at times when it's not needed.
2012-11-23bluetooth: Add helper pa_bluetooth_device_any_audio_connected()Tanu Kaskinen3-4/+27
The new helper function makes it easier to check whether any audio profiles are connected. That information is needed by the discovery module for deciding whether a new device module should be loaded. The device module should use this information too to unload itself at the right time, but that's currently not implemented.
2012-11-22bluetooth: Rename former device_is_audio()Mikel Astiz1-4/+4
Use a more accurate name for the function since it doesn't just check if it is an audio device (which can be detected quite early), but it also checks if the most relevant properties (device info, etc.) have been received. Besides, add the const qualifier to the pointer since it's not going to be modified.
2012-11-22bluetooth: Ignore Device.ConnectedTanu Kaskinen3-5/+1
The Device.Connected was only used for tracking whether a device module should be loaded, but that information is already included in the individual profile state properties. The property can therefore be completely ignored without any loss in functionality.
2012-11-22bluetooth: Add a pa_bluetooth_discovery pointer to pa_bluetooth_device.Tanu Kaskinen2-18/+21
This simplifies some function argument lists.
2012-11-20stream-restore: Add missing method handler argument.Juho Hämäläinen1-5/+6
Stream-restore DBus API method argument list is missing last boolean argument apply_immediately, causing assert to fail in AddEntry handling. Signed-off-by: Juho Hämäläinen <jusa@hilvi.org>
2012-11-19core: Remove bad free() callArun Raghavan1-1/+0
The string created when trying to use XDG_RUNTIME_DIR is freed before it is used in a debug message, and is freed again. https://bugs.freedesktop.org/show_bug.cgi?id=57280
2012-11-19sink-input, source-output: Check rate update success for passthroughArun Raghavan2-0/+16
This makes sure we don't try to plug in a passthrough stream if the final sink/source sample spec doesn't match what we want. In the future, we might want to change rate updates to try a full sample spec update for passthrough streams. https://bugs.freedesktop.org/show_bug.cgi?id=50951
2012-11-19source-output: Fix volume fixup for rate updateArun Raghavan1-3/+3
The could that should have been after the rate update ended up being before, which is incorrect.
2012-11-17build-sys: Drop ChangeLog generationv2.99.2Arun Raghavan1-5/+0
This drops ChangeLog generation from git. It does not make sense to distribute 500 kB of ChangeLog given how easy it is these days to browse history with git. We might replace this with a release-annoucement-esque high-level summary of changes.
2012-11-17build-sys: Bump sonameArun Raghavan1-1/+1
2012-11-16build-sys: Bump BlueZ dependency to 4.99Arun Raghavan1-1/+1
Since the old UNIX fd IPC mechanism was removed and we rely on the D-Bus based API, this is the oldest version that is known to reliably work.
2012-11-16modules: Micro-optimisation for rewind_requested pathsArun Raghavan12-12/+12
Since some devices can be chatty with regards to how often they return from poll(), this adds a PA_UNLIKELY() to all the the rewind_requested checks in our sink modules to make the general case (no rewind was requested) the fast path.
2012-11-16sink: Process rewind requests also when suspended.Tanu Kaskinen14-60/+57
When a rewind is requested on a sink input, the request parameters are stored in the pa_sink_input struct. The parameters are reset during rewind processing, and if the sink decides to ignore the rewind request due to being suspended, stale parameters are left in pa_sink_input. It's particularly problematic if the rewrite_bytes parameter is left at -1, because that will prevent all future rewind processing on that sink input. So, in order to avoid stale parameters, every rewind request needs to be processed, even if the sink is suspended. Reported-by: Uoti Urpala
2012-11-16sink, source: Prevent unnecessary rate update attemptsArun Raghavan4-18/+10
We don't need to try a rate update if the desired sample rate is the same as the one the sink or source is already using.
2012-11-16alsa-mixer: Prefer "Digital Input Source:Digital Mic 1"David Henningsson1-3/+3
...over "Digital Input Source:Analog Input". It makes life a little easier for users of Dell xps m1330. Just an old Ubuntu delta I never upstreamed until now. The patch was originally written by Daniel T Chen <crimsun@ubuntu.com>. BugLink: https://bugs.launchpad.net/bugs/453966 Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-11-15mainloop: Don't care about the mainloop state variable when waking up the ↵Tanu Kaskinen1-1/+1
mainloop. If the mainloop is just about to enter polling, but m->state is not POLLING yet when some other thread calls pa_mainloop_wakeup(), the mainloop will not be woken up. It's safe to write to the wakeup pipe at any time, so let's just remove the check.
2012-11-15mainloop: Change wakeup_requested type from pa_bool_t to pa_atomic_t.Tanu Kaskinen1-4/+3
The variable is accessed from multiple threads, so it should be atomic.
2012-11-14alsa-mixer: Add "CLFE" and "Bass Speaker" namesDavid Henningsson3-0/+32
These are sometimes being used in the HDA driver and we should support them. Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-11-12man: Correction for how sample rate switching is disabledArun Raghavan1-1/+2
Setting to 0 in the parser causes daemon startup to fail.
2012-11-12build-sys: Correct bluez support error if sbc is missingSjoerd Simons1-1/+1
2012-11-09alsa-mixer: Add a few more machines to internal mic whitelistDavid Henningsson1-0/+6
Based on feedback in the bug below (comments 128, 129, 131). BugLink: https://bugs.launchpad.net/bugs/946232 Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2012-11-08pulse: Fix hole handling in pa_stream_peek().Tanu Kaskinen2-9/+31
Previously, if there was a hole in a recording stream, pa_stream_peek() would crash. Holes could be handled silently inside pa_stream_peek() by generating silence (wouldn't work for compressed streams, though) or by skipping any holes. However, I think it's better to let the caller decide how the holes should be handled, so in case of holes, pa_stream_peek() will return NULL data pointer and the length of the hole in the nbytes argument. This change is technically an interface break, because previously the documentation didn't mention the possibility of holes that need special handling. However, since holes caused crashing anyway in the past, it's not a regression if applications keep misbehaving due to not handing holes properly. Some words about when holes can appear in recording streams: I think it would be reasonable behavior if overruns due to the application reading data too slowly would cause holes. Currently that's not the case - overruns will just cause audio to be skipped. But the point is that this might change some day. I'm not sure how holes can occur with the current code, but as the linked bug shows, they can happen. It's most likely due to recording from a monitor source where the thing being monitored has holes in its playback stream. BugLink: http://bugs.launchpad.net/bugs/1058200
2012-11-08introspect: Minor documentation fixArun Raghavan1-4/+4
s/pa_latency_info/pa_timing_info
2012-11-07alsa: get avail, delay, timestamps in a single kernel callPierre-Louis Bossart4-22/+21
Refactor code to fetch avail, delay and timestamp values in a single call to snd_pcm_status(). The information reported is exactly the same as before, however it is extracted in a more atomic manner to improve timer-based scheduling. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
2012-11-05Revert "tests: modify alsa-time-test to use 'check' framework"Arun Raghavan2-72/+50
This reverts commit 1569601864af375c3788fbce429b6773bd48072e. Rethinking this, it makes more sense to not add this to the check framework. This is mostly useful for exposing ALSA driver issues, and it's handy to be able to build this as a standalone executable.
2012-11-05alsa: Drop verbosity on UCM messageArun Raghavan1-1/+1
We don't need to log an error-level message for missing UCM config.
2012-11-04build: fix Mac OS X configure processDeng Zhengrong1-1/+4
The original header file doesn't exist on Lion (10.7.4).