From 08f5b9f1f9292a6e9e4a6ede16bb61b38bbae89d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 5 Jan 2014 22:00:33 +0100 Subject: [PATCH] event/MultiSocketMonitor: add method ClearSocketList() --- src/event/MultiSocketMonitor.cxx | 9 +++++++++ src/event/MultiSocketMonitor.hxx | 5 +++++ src/mixer/AlsaMixerPlugin.cxx | 4 +++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/event/MultiSocketMonitor.cxx b/src/event/MultiSocketMonitor.cxx index f22b0a022..5ef8b98af 100644 --- a/src/event/MultiSocketMonitor.cxx +++ b/src/event/MultiSocketMonitor.cxx @@ -19,6 +19,7 @@ #include "config.h" #include "MultiSocketMonitor.hxx" +#include "Loop.hxx" #include @@ -35,6 +36,14 @@ MultiSocketMonitor::~MultiSocketMonitor() // TODO } +void +MultiSocketMonitor::ClearSocketList() +{ + assert(GetEventLoop().IsInsideOrNull()); + + fds.clear(); +} + #ifndef WIN32 void diff --git a/src/event/MultiSocketMonitor.hxx b/src/event/MultiSocketMonitor.hxx index 963745be1..150f7baad 100644 --- a/src/event/MultiSocketMonitor.hxx +++ b/src/event/MultiSocketMonitor.hxx @@ -125,6 +125,11 @@ public: fds.emplace_front(*this, fd, events); } + /** + * Remove all sockets. + */ + void ClearSocketList(); + /** * Update the known sockets by invoking the given function for * each one; its return value is the events bit mask. A diff --git a/src/mixer/AlsaMixerPlugin.cxx b/src/mixer/AlsaMixerPlugin.cxx index f0d9b8007..4f92e697d 100644 --- a/src/mixer/AlsaMixerPlugin.cxx +++ b/src/mixer/AlsaMixerPlugin.cxx @@ -91,8 +91,10 @@ static constexpr Domain alsa_mixer_domain("alsa_mixer"); int AlsaMixerMonitor::PrepareSockets() { - if (mixer == nullptr) + if (mixer == nullptr) { + ClearSocketList(); return -1; + } int count = snd_mixer_poll_descriptors_count(mixer); if (count < 0)