mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-10 14:44:12 +00:00
fix recursive runtime drop impl
This commit is contained in:
parent
cb4c46154d
commit
b09e528aaa
2 changed files with 6 additions and 9 deletions
|
@ -49,13 +49,6 @@ pub struct Runtime {
|
|||
pub(crate) scope_stack: RefCell<Vec<ScopeId>>,
|
||||
}
|
||||
|
||||
impl Drop for Runtime {
|
||||
fn drop(&mut self) {
|
||||
// todo: do this better
|
||||
pop_runtime();
|
||||
}
|
||||
}
|
||||
|
||||
impl Runtime {
|
||||
pub(crate) fn new(scheduler: Rc<Scheduler>) -> Rc<Self> {
|
||||
let runtime = Rc::new(Self {
|
||||
|
@ -65,7 +58,6 @@ impl Runtime {
|
|||
|
||||
scope_stack: Default::default(),
|
||||
});
|
||||
push_runtime(runtime.clone());
|
||||
runtime
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ use crate::{
|
|||
mutations::Mutation,
|
||||
nodes::RenderReturn,
|
||||
nodes::{Template, TemplateId},
|
||||
runtime::Runtime,
|
||||
runtime::{pop_runtime, push_runtime, Runtime},
|
||||
scopes::{ScopeId, ScopeState},
|
||||
AttributeValue, Element, Event, Scope,
|
||||
};
|
||||
|
@ -275,6 +275,9 @@ impl VirtualDom {
|
|||
// the root element is always given element ID 0 since it's the container for the entire tree
|
||||
dom.elements.insert(ElementRef::none());
|
||||
|
||||
// Set this as the current runtime
|
||||
push_runtime(dom.runtime.clone());
|
||||
|
||||
dom
|
||||
}
|
||||
|
||||
|
@ -648,5 +651,7 @@ impl Drop for VirtualDom {
|
|||
fn drop(&mut self) {
|
||||
// Simply drop this scope which drops all of its children
|
||||
self.drop_scope(ScopeId(0), true);
|
||||
// remove the current runtime
|
||||
pop_runtime();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue