Did a bit of provider cleanup

This commit is contained in:
2023-03-10 09:59:47 -08:00
parent 93ff957e38
commit 95d1ef476f
3 changed files with 24 additions and 4 deletions

View File

@ -46,6 +46,8 @@ namespace Dawn {
std::vector<IStateOwnerEventLegacy*> eventLegacyBridge;
public:
std::vector<std::function<void()>> _stateProviderListeners;
/**
* Called by the state event when it is disposing (before the StateOwner
* itself is).
@ -228,6 +230,13 @@ namespace Dawn {
* useEffects or useEvents.
*/
virtual ~StateOwner() {
auto providers = this->_stateProviderListeners;
auto itProvider = providers.begin();
while(itProvider != providers.end()) {
(*itProvider)();
++itProvider;
}
auto it = this->eventsSubscribed.begin();
while(it != this->eventsSubscribed.end()) {
(*it)->_stateOwnerDestroyed(this);

View File

@ -38,12 +38,13 @@ namespace Dawn {
l.data = data;
this->listeners.push_back(l);
return std::bind([&](struct StateListener<D, A...> listener) {
auto unsub = std::bind([&](struct StateListener<D, A...> listener) {
// Not yet implemented
assertUnreachable();
// auto it = std::find(listeners.begin(), listeners.end(), listener);
// assertFalse(it == listeners.end());
// listeners.erase(it);
}, l);
context->_stateProviderListeners.push_back(unsub);
return unsub;
}
};
}