in case of error, alsamixer_new() would leak the object, while
alsamixer_list() might crash due to a null pointer.
as a drive-by, make alsamixer_gethandle() `static`.
commit 8abf06be introduced a pause() prior to draining, in an attempt
to work around clearly broken pulseaudio client behavior for capture
streams (drain() is supposed to imply a stop).
but as the workaround was also applied to playback streams, it would
cause nasty "clicks", as the stream would (obviously) stop before being
resumed for draining.
but draining is actually pointless for capture streams, as we're closing
right afterwards, so the samples are lost anyway.
what's more, destructors are not supposed to wait for anything, so
draining in alsapcm_dealloc() was wrong to start with. so we remove it.
note that this is a minor behavior change, which is reflected by the
adjustment of the playback test to have an explicit close() at the end.
finally, close() was also affected by the pulseaudio bug (which was not
addressed before), so there we make draining exclusive to playback
streams.
* First version documentation PCM.info() method.
* Add reference to documentation to docstring for PCM.info() method.
* Add extra fields to info dict:
card_no *index of card* integer (negative indicates device not associable with a card)
device_no *index of PCM device* integer
subdevice_no *index of PCM subdevice* integer
and update documentation accordingly.
Co-authored-by: Ronald van Elburg <Ronald@SoundAppraisal.eu>
* alsamixer_getvolume: Fix incorrect parenthesis
The pcmtypeobj check is overriding the pcmtype if the object is not NULL
or Py_None, making it impossible to get the playback volume. Fix the
paranthesis so that pcmtype is only overwritten when pcmtypeobj is not
set.
* Fix indentation format
Fix the indentation format to match the rest of the project.1
Co-authored-by: Portia <portia.stephens@biamp.com>
* Use `pcmtype` keyword for range
Update methods that accept a `direction` argument (i.e.
capture/playback) to get this via positional _or_ keyword arguments.
Code using keyword arguments can be more robust; however the main reason
for this change is to prepare the way for an extra `units` argument to
many of these methods.
Update documentation to consistently use `pcmtype` instead of
a mixture of that and `direction`.
* Support units