mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
ValueTree: Optimise when listeners don't remove themselves
This commit is contained in:
parent
a469daf5be
commit
315167a91a
1 changed files with 10 additions and 12 deletions
|
|
@ -76,23 +76,21 @@ public:
|
|||
template <typename Function>
|
||||
void callListeners (ValueTree::Listener* listenerToExclude, Function fn) const
|
||||
{
|
||||
auto numListeners = valueTreesWithListeners.size();
|
||||
if (valueTreesWithListeners.size() == 0)
|
||||
return;
|
||||
|
||||
if (numListeners == 1)
|
||||
if (valueTreesWithListeners.size() == 1)
|
||||
{
|
||||
valueTreesWithListeners.getUnchecked (0)->listeners.callExcluding (listenerToExclude, fn);
|
||||
return;
|
||||
}
|
||||
else if (numListeners > 0)
|
||||
|
||||
const auto listenersCopy = valueTreesWithListeners;
|
||||
|
||||
for (auto [i, v] : enumerate (listenersCopy, int{}))
|
||||
{
|
||||
auto listenersCopy = valueTreesWithListeners;
|
||||
|
||||
for (int i = 0; i < numListeners; ++i)
|
||||
{
|
||||
auto* v = listenersCopy.getUnchecked (i);
|
||||
|
||||
if (i == 0 || valueTreesWithListeners.contains (v))
|
||||
v->listeners.callExcluding (listenerToExclude, fn);
|
||||
}
|
||||
if (valueTreesWithListeners[i] == v || valueTreesWithListeners.contains (v))
|
||||
v->listeners.callExcluding (listenerToExclude, fn);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue