From 3cd6cd54a6ffec3b96b61741aec3bf2723a35419 Mon Sep 17 00:00:00 2001 From: boyned//Kampfkarren <3190756+Kampfkarren@users.noreply.github.com> Date: Mon, 24 Mar 2025 15:53:19 -0700 Subject: [PATCH] Optimize computed's anti-recursion device --- packages/charm/src/computed.luau | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/charm/src/computed.luau b/packages/charm/src/computed.luau index e786c45..cc328c0 100644 --- a/packages/charm/src/computed.luau +++ b/packages/charm/src/computed.luau @@ -18,13 +18,18 @@ local function computed(callback: Selector, options: AtomOptions?): Sel local computedAtom = atom(state, options) local computedRef = setmetatable({ current = computedAtom }, { __mode = "v" }) + local pauseListening = false local function listener() + if pauseListening then + return + end + local computedAtom = computedRef.current if computedAtom then - store.disconnect(dependencies, listener) + pauseListening = true dependencies, state = store.capture(callback) - store.connect(dependencies, listener, computedAtom) + pauseListening = false computedAtom(state) end end