Skip to content

Commit 2e46623

Browse files
committed
fix: dispose of renderer
1 parent 50a7bdd commit 2e46623

4 files changed

Lines changed: 28 additions & 4 deletions

File tree

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@googlemaps/three",
3-
"version": "1.0.0-beta.2",
3+
"version": "1.0.0-beta.3",
44
"keywords": [
55
"google",
66
"maps",

src/three.test.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
import { Map, initialize } from "@googlemaps/jest-mocks";
18-
import { PerspectiveCamera, Scene } from "three";
18+
import { PerspectiveCamera, Scene, WebGLRenderer } from "three";
1919

2020
import { ThreeJSOverlayView } from "./three";
2121

@@ -74,6 +74,23 @@ test("setMap is called on overlay", () => {
7474
expect(overlay["overlay"].setMap).toHaveBeenCalledWith(map);
7575
});
7676

77+
test("onContext lost disposes of renderer", () => {
78+
const overlay = new ThreeJSOverlayView({});
79+
80+
overlay.onContextLost(); // noop
81+
expect(overlay["renderer"]).toBeNull();
82+
83+
const dispose = jest.fn();
84+
overlay["renderer"] = {
85+
dispose,
86+
} as unknown as WebGLRenderer;
87+
88+
overlay.onContextLost();
89+
90+
expect(dispose).toHaveBeenCalled();
91+
expect(overlay["renderer"]).toBeNull();
92+
});
93+
7794
test("getMap is called on overlay", () => {
7895
const overlay = new ThreeJSOverlayView({});
7996
overlay.getMap();

src/three.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,14 @@ export class ThreeJSOverlayView implements google.maps.WebglOverlayView {
169169
this.renderer.setSize(width, height, false);
170170
}
171171

172-
onContextLost() {}
172+
onContextLost() {
173+
if (!this.renderer) {
174+
return;
175+
}
176+
177+
this.renderer.dispose();
178+
this.renderer = null;
179+
}
173180

174181
onDraw(
175182
gl: WebGLRenderingContext,

0 commit comments

Comments
 (0)