refactor(29-01): stabilize useMixerHelper function references

- Wrap getMixer with useCallback to ensure stable reference
- Prevents cascade of function recreations on every render
- Dependencies: mixMode (selector value)
- Uses allMixersRef.current (ref, not dependency)

This stabilization is prerequisite for effective context memoization.
All dependent functions (fillTrackVolumeObject, mute, faderChanged, etc.)
now automatically stabilize because their getMixer dependency is stable.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Nuwan 2026-03-05 17:51:31 +05:30
parent 468860d54f
commit d008fe977c
1 changed files with 2 additions and 2 deletions

View File

@ -125,13 +125,13 @@ const useMixerHelper = () => {
// console.log("_XDEBUG_ useMixerHelper: allMixersRef updated", allMixersRef.current); // console.log("_XDEBUG_ useMixerHelper: allMixersRef updated", allMixersRef.current);
}, [allMixers]); }, [allMixers]);
const getMixer = (mixerId, mode) => { const getMixer = useCallback((mixerId, mode) => {
// Only default to mixMode if mode is undefined, not if it's explicitly false // Only default to mixMode if mode is undefined, not if it's explicitly false
if (mode === undefined) { if (mode === undefined) {
mode = mixMode; mode = mixMode;
} }
return allMixersRef.current[(mode ? 'M' : 'P') + mixerId]; return allMixersRef.current[(mode ? 'M' : 'P') + mixerId];
} }, [mixMode]);
const fillTrackVolumeObject = useCallback((mixerId, mode, currentAllMixers, broadcast = true) => { const fillTrackVolumeObject = useCallback((mixerId, mode, currentAllMixers, broadcast = true) => {
const mixer = getMixer(mixerId, mode, currentAllMixers); const mixer = getMixer(mixerId, mode, currentAllMixers);