Commit 00d6796a by Jamie Madill Committed by Commit Bot

Replace std::set with vector for signal receivers.

This should make insertion much faster, which will improve the speed of many BindBuffer calls. BUG=angleproject:1458 Change-Id: I3f7ebc02cc481257be8b84773506b9ac9e3be677 Reviewed-on: https://chromium-review.googlesource.com/364221Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent 11b30612
......@@ -9,6 +9,8 @@
#include "libANGLE/signal_utils.h"
#include <algorithm>
#include "common/debug.h"
namespace angle
......@@ -25,14 +27,15 @@ BroadcastChannel::~BroadcastChannel()
void BroadcastChannel::addReceiver(ChannelBinding *receiver)
{
ASSERT(mReceivers.count(receiver) == 0);
mReceivers.insert(receiver);
ASSERT(std::find(mReceivers.begin(), mReceivers.end(), receiver) == mReceivers.end());
mReceivers.push_back(receiver);
}
void BroadcastChannel::removeReceiver(ChannelBinding *receiver)
{
ASSERT(mReceivers.count(receiver) == 1);
mReceivers.erase(receiver);
auto iter = std::find(mReceivers.begin(), mReceivers.end(), receiver);
ASSERT(iter != mReceivers.end());
mReceivers.erase(iter);
}
void BroadcastChannel::signal() const
......
......@@ -46,7 +46,7 @@ class BroadcastChannel final : NonCopyable
void addReceiver(ChannelBinding *receiver);
void removeReceiver(ChannelBinding *receiver);
std::set<ChannelBinding *> mReceivers;
std::vector<ChannelBinding *> mReceivers;
};
// The dependent class keeps bindings to the host's BroadcastChannel.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment