add DirtyAll to SchedulerMsg

This commit is contained in:
Evan Almloff committed 2022-06-09 10:01:09 -05:00
1 parent d4dda577d6
commit fe5c698c09
2 files changed
+10 -4

No files matched your search

+8
View File
@@ -125,6 +125,9 @@ pub enum SchedulerMsg {
/// Immediate updates from Components that mark them as dirty
Immediate(ScopeId),
/// Mark all components as dirty and update them
DirtyAll,
/// New tasks from components that should be polled when the next poll is ready
NewTask(ScopeId),
}
@@ -407,6 +410,11 @@ impl VirtualDom {
SchedulerMsg::Immediate(s) => {
self.dirty_scopes.insert(s);
}
SchedulerMsg::DirtyAll => {
for id in self.scopes.scopes.borrow().keys() {
self.dirty_scopes.insert(*id);
}
}
}
}
+2 -4
View File
@@ -1,5 +1,5 @@
use captuered_context::CapturedContext;
use dioxus_core::{NodeFactory, SchedulerMsg, ScopeId, VNode};
use dioxus_core::{NodeFactory, SchedulerMsg, VNode};
use dioxus_hooks::UnboundedSender;
use error::Error;
use interperter::build;
@@ -108,9 +108,7 @@ impl RsxContext {
let mut write = self.data.write().unwrap();
write.hm.insert(loc, text);
if let Some(channel) = &mut write.scheduler_channel {
channel
.unbounded_send(SchedulerMsg::Immediate(ScopeId(0)))
.unwrap()
channel.unbounded_send(SchedulerMsg::DirtyAll).unwrap()
}
}