on master help sign in
Move the events trampoline into the vdom
commit01919729b1b8b6a725354f37c90eb0293c56eebb authorNick Fitzgerald <fitzgen@gmail.com> dateSat 6 Apr 2019, 00:00 (8 years ago) parentf7a632a
2 files changed+8−8
src/change_list.rs+2−7 src/vdom.rs+6−1
src/change_list.rs+2−7
@@ -56,7 +56,6 @@ pub(crate) struct ChangeList {
5656 strings_cache: FxHashMap<String, StringsCacheEntry>,
5757 next_string_key: u32,
5858 interpreter: js::ChangeListInterpreter,
59− events_trampoline: Option<crate::EventsTrampoline>,
6059}
6160
6261impl Drop for ChangeList {
@@ -71,7 +70,6 @@ impl fmt::Debug for ChangeList {
7170 f.debug_struct("ChangeList")
7271 .field("bump", &self.bump)
7372 .field("interpreter", &self.interpreter)
74− .field("events_trampoline", &"..")
7573 .finish()
7674 }
7775}
@@ -86,14 +84,11 @@ impl ChangeList {
8684 strings_cache,
8785 next_string_key: 0,
8886 interpreter,
89− events_trampoline: None,
9087 }
9188 }
9289
93− pub(crate) fn init_events_trampoline(&mut self, trampoline: crate::EventsTrampoline) {
94− debug_assert!(self.events_trampoline.is_none());
95− self.interpreter.init_events_trampoline(&trampoline);
96− self.events_trampoline = Some(trampoline);
90+ pub(crate) fn init_events_trampoline(&mut self, trampoline: &crate::EventsTrampoline) {
91+ self.interpreter.init_events_trampoline(trampoline);
9792 }
9893}
9994
src/vdom.rs+6−1
@@ -59,6 +59,7 @@ pub(crate) struct VdomInnerExclusive {
5959 change_list: ManuallyDrop<ChangeList>,
6060 container: crate::Element,
6161 events_registry: Option<Rc<RefCell<EventsRegistry>>>,
62+ events_trampoline: Option<crate::EventsTrampoline>,
6263 cached_set: crate::RefCell<CachedSet>,
6364
6465 // Actually a reference into `self.dom_buffers[0]` or if `self.component` is
@@ -92,6 +93,7 @@ impl fmt::Debug for VdomInnerExclusive {
9293 .field("change_list", &self.change_list)
9394 .field("container", &self.container)
9495 .field("events_registry", &self.events_registry)
96+ .field("events_trampoline", &"..")
9597 .field("current_root", &self.current_root)
9698 .finish()
9799 }
@@ -179,6 +181,7 @@ impl Vdom {
179181 container,
180182 current_root,
181183 events_registry: None,
184+ events_trampoline: None,
182185 cached_set: crate::RefCell::new(Default::default()),
183186 }),
184187 });
@@ -188,7 +191,9 @@ impl Vdom {
188191 {
189192 let mut inner = inner.exclusive.borrow_mut();
190193 inner.events_registry = Some(events_registry);
191− inner.change_list.init_events_trampoline(events_trampoline);
194+ inner.change_list.init_events_trampoline(&events_trampoline);
195+ debug_assert!(inner.events_trampoline.is_none());
196+ inner.events_trampoline = Some(events_trampoline);
192197
193198 // Diff and apply the `contents` against our dummy `<div/>`.
194199 inner.render();