use std::rc::Rc;
use cranpose_core::{NodeId, internal::NodeReads};
use super::{AppContextId, with_app_context_by_id};
pub(super) fn new(context_id: AppContextId) -> Rc<NodeReads> {
NodeReads::new(move |nodes| {
with_app_context_by_id(context_id, |context| {
let mut repasses = context.state.measure_repasses.borrow_mut();
for &node_id in nodes {
repasses.schedule_repass(node_id);
}
drop(repasses);
context.state.render_invalidated.set(true);
});
})
}
pub(crate) fn forget(context_id: AppContextId, node_id: NodeId) {
with_app_context_by_id(context_id, |context| context.measure_reads.forget(node_id));
}