Skip to content

Commit 19e9cdf

Browse files
authored
Fix NativeEngine memory leak (#104)
* Actually dispose engine in release builds * Bring in XMLHttpRequest fixes for BabylonNative
1 parent 4ed730e commit 19e9cdf

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

Modules/@babylonjs/react-native/EngineHook.ts

+8-7
Original file line numberDiff line numberDiff line change
@@ -67,22 +67,23 @@ export function useEngine(): Engine | undefined {
6767

6868
useEffect(() => {
6969
let disposed = false;
70+
let engine: Engine | undefined = undefined;
7071

7172
(async () => {
7273
if (await BabylonModule.initialize() && !disposed)
7374
{
74-
setEngine(new NativeEngine());
75+
engine = new NativeEngine();
76+
setEngine(engine);
7577
}
7678
})();
7779

7880
return () => {
7981
disposed = true;
80-
setEngine(engine => {
81-
if (engine) {
82-
DisposeEngine(engine);
83-
}
84-
return undefined;
85-
});
82+
// NOTE: Do not use setEngine with a callback to dispose the engine instance as that callback does not get called during component unmount when compiled in release.
83+
if (engine) {
84+
DisposeEngine(engine);
85+
}
86+
setEngine(undefined);
8687
};
8788
}, []);
8889

0 commit comments

Comments
 (0)