summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraaronp64 <aaronp.code@gmail.com>2024-04-24 15:18:56 -0400
committerRémi Verschelde <rverschelde@gmail.com>2024-09-17 08:57:42 +0200
commita2f64b3c10fdccc396a4315c6dc5dd39a9cb0081 (patch)
treebaf7b79f544b4ce1c696450196b3e5171f222c3b
parentfc5e7c74118be0d4c6df0b246cf69bbbbd2096fd (diff)
downloadredot-engine-a2f64b3c10fdccc396a4315c6dc5dd39a9cb0081.tar.gz
Fix SubViewport/AudioStreamPlayer2D crash
Updated Viewport destructor to remove itself from World2D, to avoid World2D keeping invalid pointers. (cherry picked from commit 7a9acd5aca6e37c4f36180136fa9e224f9950a43)
-rw-r--r--scene/main/viewport.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 77bcd7fb2c..04f7f4b3e5 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -5032,6 +5032,9 @@ Viewport::~Viewport() {
for (ViewportTexture *E : viewport_textures) {
E->vp = nullptr;
}
+ if (world_2d.is_valid()) {
+ world_2d->remove_viewport(this);
+ }
ERR_FAIL_NULL(RenderingServer::get_singleton());
RenderingServer::get_singleton()->free(viewport);
}