diff options
author | Max Kellermann <max@duempel.org> | 2014-06-10 18:57:30 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-06-11 09:27:17 +0200 |
commit | 3364c1b8939aaf2f758a9396d0b73298042516d9 (patch) | |
tree | 046eb528b1e79d8c4bcd55e9939d58bde9981c21 /src/client/ClientList.cxx | |
parent | 0801b3f495aac982bc7d009d7ae81d8e3041db0c (diff) | |
download | mpd-3364c1b8939aaf2f758a9396d0b73298042516d9.tar.gz mpd-3364c1b8939aaf2f758a9396d0b73298042516d9.tar.xz mpd-3364c1b8939aaf2f758a9396d0b73298042516d9.zip |
ClientList: use class boost::intrusive::list
Eliminate extra allocations for the std::list node instances.
Diffstat (limited to 'src/client/ClientList.cxx')
-rw-r--r-- | src/client/ClientList.cxx | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/src/client/ClientList.cxx b/src/client/ClientList.cxx index 101802479..a1f286928 100644 --- a/src/client/ClientList.cxx +++ b/src/client/ClientList.cxx @@ -28,28 +28,15 @@ void ClientList::Remove(Client &client) { - assert(size > 0); assert(!list.empty()); - auto i = std::find(list.begin(), list.end(), &client); - assert(i != list.end()); - list.erase(i); - --size; + list.erase(list.iterator_to(client)); } void ClientList::CloseAll() { - while (!list.empty()) { - delete list.front(); - list.pop_front(); - -#ifndef NDEBUG - --size; -#endif - } - - assert(size == 0); + list.clear_and_dispose(Client::Disposer()); } void @@ -57,6 +44,6 @@ ClientList::IdleAdd(unsigned flags) { assert(flags != 0); - for (const auto &client : list) - client->IdleAdd(flags); + for (auto &client : list) + client.IdleAdd(flags); } |