{
}
-PlatformEventDispatcher::~PlatformEventDispatcher()
-{
-}
-
void PlatformEventDispatcher::addController(PlatformEventController* controller)
{
bool wasEmpty = m_controllers.isEmpty();
if (index == kNotFound)
return;
- m_controllers[index] = 0;
+ m_controllers[index] = nullptr;
m_needsPurge = true;
if (!m_isDispatching)
purgeControllers();
}
+void PlatformEventDispatcher::trace(Visitor* visitor)
+{
+#if ENABLE(OILPAN)
+ // Trace the backing store, the weak(&bare) element references won't be.
+ visitor->trace(m_controllers);
+ visitor->registerWeakMembers<PlatformEventDispatcher, &PlatformEventDispatcher::clearWeakMembers>(this);
+#endif
+}
+
+#if ENABLE(OILPAN)
+void PlatformEventDispatcher::clearWeakMembers(Visitor* visitor)
+{
+ for (size_t i = 0; i < m_controllers.size(); ++i) {
+ if (!visitor->isAlive(m_controllers[i])) {
+ m_controllers[i] = nullptr;
+ m_needsPurge = true;
+ }
+ }
+ // Next notification will purge the empty slots.
+}
+#endif
+
} // namespace blink