From 77d42a83cc8f74d7665a2366df27caba518bc4b4 Mon Sep 17 00:00:00 2001 From: Sebastian Piaskowy Date: Wed, 23 Jul 2025 12:46:31 +0200 Subject: [PATCH] feat: Improve buffer lifecycle handling in useBuffer --- packages/typegpu-confetti/src/utils.ts | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/packages/typegpu-confetti/src/utils.ts b/packages/typegpu-confetti/src/utils.ts index 6a71a54..44f65b2 100644 --- a/packages/typegpu-confetti/src/utils.ts +++ b/packages/typegpu-confetti/src/utils.ts @@ -28,38 +28,22 @@ export function useBuffer( value?: Infer | undefined, ): TgpuBuffer { const root = useRoot(); - const bufferRef = useRef | null>(null); - // biome-ignore lint/correctness/useExhaustiveDependencies: - let buffer = useMemo(() => { - if (bufferRef.current) { - bufferRef.current.destroy(); - } - const buffer = root.createBuffer(schema, value); - bufferRef.current = buffer; - return buffer; + const buffer = useMemo(() => { + return root.createBuffer(schema); }, [root, schema]); - // biome-ignore lint/style/noNonNullAssertion: - buffer = bufferRef.current!; - - useLayoutEffect(() => { + useEffect(() => { if (value !== undefined && buffer && !buffer.destroyed) { buffer.write(value); } }, [value, buffer]); - const cleanupRef = useRef | null>(null); - useEffect(() => { - if (cleanupRef.current !== null) { - clearTimeout(cleanupRef.current); - } - return () => { - cleanupRef.current = setTimeout(() => { + if (!buffer.destroyed) { buffer.destroy(); - }, 1000); + } }; }, [buffer]);