make parallelism optional

This commit is contained in:
Evan Almloff committed 2023-02-02 08:57:23 -06:00
1 parent 687cdf2cac
commit 2f6b8393f8
3 files changed
+14 -5

No files matched your search

+7 -2
View File
@@ -380,6 +380,7 @@ pub fn resolve_passes<V: FromAnyValue + Send + Sync>(
tree: &mut RealDom<V>,
dirty_nodes: DirtyNodeStates,
ctx: SendAnyMap,
parallel: bool,
) -> FxDashSet<NodeId> {
let passes = &tree.passes;
let mut resolved_passes: FxHashSet<TypeId> = FxHashSet::default();
@@ -414,9 +415,13 @@ pub fn resolve_passes<V: FromAnyValue + Send + Sync>(
let dirty_nodes = dirty_nodes.clone();
let nodes_updated = nodes_updated.clone();
let ctx = ctx.clone();
s.spawn(move |_| {
if parallel {
s.spawn(move |_| {
pass.resolve(tree_view, &dirty_nodes, &nodes_updated, &ctx);
});
} else {
pass.resolve(tree_view, &dirty_nodes, &nodes_updated, &ctx);
});
}
} else {
i += 1;
}
+5 -1
View File
@@ -439,6 +439,7 @@ impl<V: FromAnyValue + Send + Sync> RealDom<V> {
pub fn update_state(
&mut self,
ctx: SendAnyMap,
parallel: bool,
) -> (FxDashSet<NodeId>, FxHashMap<NodeId, NodeMask>) {
let passes = std::mem::take(&mut self.passes_updated);
let nodes_updated = std::mem::take(&mut self.nodes_updated);
@@ -452,7 +453,10 @@ impl<V: FromAnyValue + Send + Sync> RealDom<V> {
}
}
(resolve_passes(self, dirty_nodes, ctx), nodes_updated)
(
resolve_passes(self, dirty_nodes, ctx, parallel),
nodes_updated,
)
}
fn remove(&mut self, id: NodeId) {
+2 -2
View File
@@ -126,7 +126,7 @@ pub fn launch_cfg_with_props<Props: 'static>(app: Component<Props>, props: Props
rdom.apply_mutations(mutations);
let mut any_map = SendAnyMap::new();
any_map.insert(taffy.clone());
let _ = rdom.update_state(any_map);
let _ = rdom.update_state(any_map, false);
}
render_vdom(
@@ -320,7 +320,7 @@ fn render_vdom(
// update the style and layout
let mut any_map = SendAnyMap::new();
any_map.insert(taffy.clone());
let (new_to_rerender, dirty) = rdom.update_state(any_map);
let (new_to_rerender, dirty) = rdom.update_state(any_map, false);
to_rerender = new_to_rerender;
let text_mask = NodeMaskBuilder::new().with_text().build();
for (id, mask) in dirty {