make parallelism optional
This commit is contained in:
1 parent
687cdf2cac
commit
2f6b8393f8
3 files changed
+14
-5
No files matched your search
@@ -380,6 +380,7 @@ pub fn resolve_passes<V: FromAnyValue + Send + Sync>(
|
|||||||
tree: &mut RealDom<V>,
|
tree: &mut RealDom<V>,
|
||||||
dirty_nodes: DirtyNodeStates,
|
dirty_nodes: DirtyNodeStates,
|
||||||
ctx: SendAnyMap,
|
ctx: SendAnyMap,
|
||||||
|
parallel: bool,
|
||||||
) -> FxDashSet<NodeId> {
|
) -> FxDashSet<NodeId> {
|
||||||
let passes = &tree.passes;
|
let passes = &tree.passes;
|
||||||
let mut resolved_passes: FxHashSet<TypeId> = FxHashSet::default();
|
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 dirty_nodes = dirty_nodes.clone();
|
||||||
let nodes_updated = nodes_updated.clone();
|
let nodes_updated = nodes_updated.clone();
|
||||||
let ctx = ctx.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);
|
pass.resolve(tree_view, &dirty_nodes, &nodes_updated, &ctx);
|
||||||
});
|
}
|
||||||
} else {
|
} else {
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -439,6 +439,7 @@ impl<V: FromAnyValue + Send + Sync> RealDom<V> {
|
|||||||
pub fn update_state(
|
pub fn update_state(
|
||||||
&mut self,
|
&mut self,
|
||||||
ctx: SendAnyMap,
|
ctx: SendAnyMap,
|
||||||
|
parallel: bool,
|
||||||
) -> (FxDashSet<NodeId>, FxHashMap<NodeId, NodeMask>) {
|
) -> (FxDashSet<NodeId>, FxHashMap<NodeId, NodeMask>) {
|
||||||
let passes = std::mem::take(&mut self.passes_updated);
|
let passes = std::mem::take(&mut self.passes_updated);
|
||||||
let nodes_updated = std::mem::take(&mut self.nodes_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) {
|
fn remove(&mut self, id: NodeId) {
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ pub fn launch_cfg_with_props<Props: 'static>(app: Component<Props>, props: Props
|
|||||||
rdom.apply_mutations(mutations);
|
rdom.apply_mutations(mutations);
|
||||||
let mut any_map = SendAnyMap::new();
|
let mut any_map = SendAnyMap::new();
|
||||||
any_map.insert(taffy.clone());
|
any_map.insert(taffy.clone());
|
||||||
let _ = rdom.update_state(any_map);
|
let _ = rdom.update_state(any_map, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
render_vdom(
|
render_vdom(
|
||||||
@@ -320,7 +320,7 @@ fn render_vdom(
|
|||||||
// update the style and layout
|
// update the style and layout
|
||||||
let mut any_map = SendAnyMap::new();
|
let mut any_map = SendAnyMap::new();
|
||||||
any_map.insert(taffy.clone());
|
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;
|
to_rerender = new_to_rerender;
|
||||||
let text_mask = NodeMaskBuilder::new().with_text().build();
|
let text_mask = NodeMaskBuilder::new().with_text().build();
|
||||||
for (id, mask) in dirty {
|
for (id, mask) in dirty {
|
||||||
|
|||||||
Reference in new issue
Block a user