mixer/alsa: fix deadlock
This deadlock was a regression by commit 8e38b4f8
. Since we currently
can't resolve this, let's revert the commit, and add a GLib specific
workaround for the build failure.
This commit is contained in:
parent
c170fed6f9
commit
42a09ff17a
@ -47,10 +47,22 @@ class AlsaMixerMonitor final : private MultiSocketMonitor {
|
||||
public:
|
||||
AlsaMixerMonitor(EventLoop &_loop, snd_mixer_t *_mixer)
|
||||
:MultiSocketMonitor(_loop), mixer(_mixer) {
|
||||
BlockingCall(_loop, [this](){ InvalidateSockets(); });
|
||||
#ifdef USE_EPOLL
|
||||
_loop.AddCall([this](){ InvalidateSockets(); });
|
||||
#else
|
||||
_loop.AddIdle(InitAlsaMixerMonitor, this);
|
||||
#endif
|
||||
}
|
||||
|
||||
private:
|
||||
#ifndef USE_EPOLL
|
||||
static gboolean InitAlsaMixerMonitor(gpointer data) {
|
||||
AlsaMixerMonitor &amm = *(AlsaMixerMonitor *)data;
|
||||
amm.InvalidateSockets();
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
virtual int PrepareSockets() override;
|
||||
virtual void DispatchSockets() override;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user