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 @@ ...@@ -9,6 +9,8 @@
#include "libANGLE/signal_utils.h" #include "libANGLE/signal_utils.h"
#include <algorithm>
#include "common/debug.h" #include "common/debug.h"
namespace angle namespace angle
...@@ -25,14 +27,15 @@ BroadcastChannel::~BroadcastChannel() ...@@ -25,14 +27,15 @@ BroadcastChannel::~BroadcastChannel()
void BroadcastChannel::addReceiver(ChannelBinding *receiver) void BroadcastChannel::addReceiver(ChannelBinding *receiver)
{ {
ASSERT(mReceivers.count(receiver) == 0); ASSERT(std::find(mReceivers.begin(), mReceivers.end(), receiver) == mReceivers.end());
mReceivers.insert(receiver); mReceivers.push_back(receiver);
} }
void BroadcastChannel::removeReceiver(ChannelBinding *receiver) void BroadcastChannel::removeReceiver(ChannelBinding *receiver)
{ {
ASSERT(mReceivers.count(receiver) == 1); auto iter = std::find(mReceivers.begin(), mReceivers.end(), receiver);
mReceivers.erase(receiver); ASSERT(iter != mReceivers.end());
mReceivers.erase(iter);
} }
void BroadcastChannel::signal() const void BroadcastChannel::signal() const
......
...@@ -46,7 +46,7 @@ class BroadcastChannel final : NonCopyable ...@@ -46,7 +46,7 @@ class BroadcastChannel final : NonCopyable
void addReceiver(ChannelBinding *receiver); void addReceiver(ChannelBinding *receiver);
void removeReceiver(ChannelBinding *receiver); void removeReceiver(ChannelBinding *receiver);
std::set<ChannelBinding *> mReceivers; std::vector<ChannelBinding *> mReceivers;
}; };
// The dependent class keeps bindings to the host's BroadcastChannel. // 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