Repository navigation
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
Both listeners are removed using their original references before renderer teardown, with no unresolved issues.
No open issues 🎉
What changed in this PR
Fixes errors caused by WebGL context events firing after a game is destroyed.
Changes:
- Stores bound context event handlers and removes both listeners before renderer teardown.
- Documents the fix in the changelog.
| File | Description |
|---|---|
| src/core/Game.js | Retains handler references and removes listeners during destruction. |
| CHANGELOG.md | Documents the destroyed-game context-loss fix. |
Review effort: Balanced
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR
Describe the changes below:
Game#setUpRendereraddedcontextLost.bind(this)andcontextRestored.bind(this)to the canvas without storing references to them, soGame#destroycan't remove them.If a destroyed game's context was lost later (like if the browser evicts it for too many active contexts), then
contextLostwould throwCannot set properties of null (setting 'contextLost'). The bound handlers are now kept on the game and removed indestroy().