diff --git a/src/context.rs b/src/context.rs index 19f5831c01f462fb332a917d3ac34ca4b32d42d5..c51cadc472adae47e24f23dad6bb3cb6514d54a4 100644 --- a/src/context.rs +++ b/src/context.rs @@ -93,16 +93,16 @@ pub struct KayakRootContext { pub(crate) context_entities: ContextEntities, pub(crate) current_cursor: CursorIcon, pub(crate) clone_systems: Arc<RwLock<EntityCloneSystems>>, - pub(crate) cloned_widget_entities: DashMap<Entity, Entity>, + pub(crate) cloned_widget_entities: Arc<DashMap<Entity, Entity>>, pub(crate) widget_state: WidgetState, pub(crate) order_tree: Arc<RwLock<Tree>>, - pub(crate) index: DashMap<Entity, usize>, + pub(crate) index: Arc<DashMap<Entity, usize>>, /// Unique id's store entity id's related to a key rather than the child tree. /// This lets users get a unique entity. The first Entity is the parent widget. /// The 2nd hashmap is a list of keys and their entities. - pub(crate) unique_ids: DashMap<Entity, DashMap<String, Entity>>, + pub(crate) unique_ids: Arc<DashMap<Entity, DashMap<String, Entity>>>, /// Maps keyed entities to spawn parents. We can't use the tree in this case. - pub(crate) unique_ids_parents: DashMap<Entity, Entity>, + pub(crate) unique_ids_parents: Arc<DashMap<Entity, Entity>>, pub(crate) uninitilized_systems: HashSet<String>, pub camera_entity: Entity, } @@ -692,13 +692,13 @@ fn update_widgets( context_entities: &ContextEntities, focus_tree: &FocusTree, clone_systems: &Arc<RwLock<EntityCloneSystems>>, - cloned_widget_entities: &DashMap<Entity, Entity>, + cloned_widget_entities: &Arc<DashMap<Entity, Entity>>, widget_state: &WidgetState, new_ticks: &mut HashMap<String, u32>, order_tree: &Arc<RwLock<Tree>>, - index: &DashMap<Entity, usize>, - unique_ids: &DashMap<Entity, DashMap<String, Entity>>, - unique_ids_parents: &DashMap<Entity, Entity>, + index: &Arc<DashMap<Entity, usize>>, + unique_ids: &Arc<DashMap<Entity, DashMap<String, Entity>>>, + unique_ids_parents: &Arc<DashMap<Entity, Entity>>, ) { for entity in widgets.iter() { // if let (Some(entity_ref), Some(_)) = ( @@ -736,9 +736,6 @@ fn update_widgets( cloned_widget_entities, widget_state, new_ticks, - order_tree, - unique_ids, - unique_ids_parents, ); if should_update_children { @@ -1118,9 +1115,6 @@ fn update_widget( cloned_widget_entities: &DashMap<Entity, Entity>, widget_state: &WidgetState, new_ticks: &mut HashMap<String, u32>, - _order_tree: &Arc<RwLock<Tree>>, - _unique_ids: &DashMap<Entity, DashMap<String, Entity>>, - _unique_ids_parents: &DashMap<Entity, Entity>, ) -> (Tree, bool) { // Check if we should update this widget let should_rerender = { diff --git a/src/widget_context.rs b/src/widget_context.rs index 99a67f72b6310019178b9593acf62facbded7021..f3135cdfca0c44d94f35ac7a7f8e7442613c8eb9 100644 --- a/src/widget_context.rs +++ b/src/widget_context.rs @@ -21,15 +21,15 @@ pub struct KayakWidgetContext { new_tree: Arc<RwLock<Tree>>, context_entities: ContextEntities, layout_cache: Arc<RwLock<LayoutCache>>, - pub(crate) index: DashMap<Entity, usize>, + pub(crate) index: Arc<DashMap<Entity, usize>>, widget_state: WidgetState, pub(crate) order_tree: Arc<RwLock<Tree>>, pub camera_entity: Option<Entity>, // Unique id's store entity id's related to a key rather than the child tree. // This lets users get a unique entity. The first Entity is the parent widget. // The 2nd hashmap is a list of keys and their entities. - unique_ids: DashMap<Entity, DashMap<String, Entity>>, - unique_ids_parents: DashMap<Entity, Entity>, + unique_ids: Arc<DashMap<Entity, DashMap<String, Entity>>>, + unique_ids_parents: Arc<DashMap<Entity, Entity>>, } impl KayakWidgetContext { @@ -39,10 +39,10 @@ impl KayakWidgetContext { layout_cache: Arc<RwLock<LayoutCache>>, widget_state: WidgetState, order_tree: Arc<RwLock<Tree>>, - index: DashMap<Entity, usize>, + index: Arc<DashMap<Entity, usize>>, camera_entity: Option<Entity>, - unique_ids: DashMap<Entity, DashMap<String, Entity>>, - unique_ids_parents: DashMap<Entity, Entity>, + unique_ids: Arc<DashMap<Entity, DashMap<String, Entity>>>, + unique_ids_parents: Arc<DashMap<Entity, Entity>>, ) -> Self { Self { old_tree,