Merge branch 'v0.17.x'
This commit is contained in:
commit
a2ce2447a6
4
NEWS
4
NEWS
|
@ -28,6 +28,10 @@ ver 0.18 (2012/??/??)
|
||||||
* improved decoder/output error reporting
|
* improved decoder/output error reporting
|
||||||
* eliminate timer wakeup on idle MPD
|
* eliminate timer wakeup on idle MPD
|
||||||
|
|
||||||
|
ver 0.17.6 (not yet released)
|
||||||
|
* mixer:
|
||||||
|
- alsa: fix busy loop when USB sound device gets unplugged
|
||||||
|
|
||||||
ver 0.17.5 (2013/08/04)
|
ver 0.17.5 (2013/08/04)
|
||||||
* protocol:
|
* protocol:
|
||||||
- fix "playlistadd" with URI
|
- fix "playlistadd" with URI
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
static constexpr unsigned VOLUME_MIXER_ALSA_INDEX_DEFAULT = 0;
|
static constexpr unsigned VOLUME_MIXER_ALSA_INDEX_DEFAULT = 0;
|
||||||
|
|
||||||
class AlsaMixerMonitor final : private MultiSocketMonitor {
|
class AlsaMixerMonitor final : private MultiSocketMonitor {
|
||||||
snd_mixer_t *const mixer;
|
snd_mixer_t *mixer;
|
||||||
|
|
||||||
ReusableArray<pollfd> pfd_buffer;
|
ReusableArray<pollfd> pfd_buffer;
|
||||||
|
|
||||||
|
@ -83,6 +83,9 @@ static constexpr Domain alsa_mixer_domain("alsa_mixer");
|
||||||
int
|
int
|
||||||
AlsaMixerMonitor::PrepareSockets()
|
AlsaMixerMonitor::PrepareSockets()
|
||||||
{
|
{
|
||||||
|
if (mixer == nullptr)
|
||||||
|
return -1;
|
||||||
|
|
||||||
int count = snd_mixer_poll_descriptors_count(mixer);
|
int count = snd_mixer_poll_descriptors_count(mixer);
|
||||||
if (count < 0)
|
if (count < 0)
|
||||||
count = 0;
|
count = 0;
|
||||||
|
@ -117,7 +120,21 @@ AlsaMixerMonitor::PrepareSockets()
|
||||||
void
|
void
|
||||||
AlsaMixerMonitor::DispatchSockets()
|
AlsaMixerMonitor::DispatchSockets()
|
||||||
{
|
{
|
||||||
snd_mixer_handle_events(mixer);
|
assert(mixer != nullptr);
|
||||||
|
|
||||||
|
int err = snd_mixer_handle_events(mixer);
|
||||||
|
if (err < 0) {
|
||||||
|
g_warning("snd_mixer_handle_events() failed: %s",
|
||||||
|
snd_strerror(err));
|
||||||
|
|
||||||
|
if (err == -ENODEV) {
|
||||||
|
/* the sound device was unplugged; disable
|
||||||
|
this GSource */
|
||||||
|
mixer = nullptr;
|
||||||
|
InvalidateSockets();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue