event/MultiSocketMonitor: add method ClearSocketList()

This commit is contained in:
Max Kellermann 2014-01-05 22:00:33 +01:00
parent 793962c5b8
commit 08f5b9f1f9
3 changed files with 17 additions and 1 deletions

View File

@ -19,6 +19,7 @@
#include "config.h"
#include "MultiSocketMonitor.hxx"
#include "Loop.hxx"
#include <algorithm>
@ -35,6 +36,14 @@ MultiSocketMonitor::~MultiSocketMonitor()
// TODO
}
void
MultiSocketMonitor::ClearSocketList()
{
assert(GetEventLoop().IsInsideOrNull());
fds.clear();
}
#ifndef WIN32
void

View File

@ -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

View File

@ -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)