Explorar o código

Fix leaking environment RIDs in GLES2

This PR adds the code necessary to correctly free environments in GLES2, which was previously missing causing them to leak.

(cherry picked from commit 7134ef90bbe71a2ffd52d29f473a0789dbaa41fb)
lawnjelly %!s(int64=3) %!d(string=hai) anos
pai
achega
cd371c45b7
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      drivers/gles2/rasterizer_scene_gles2.cpp

+ 7 - 0
drivers/gles2/rasterizer_scene_gles2.cpp

@@ -3854,6 +3854,7 @@ bool RasterizerSceneGLES2::free(RID p_rid) {
 		shadow_atlas_set_size(p_rid, 0);
 		shadow_atlas_owner.free(p_rid);
 		memdelete(shadow_atlas);
+
 	} else if (reflection_probe_instance_owner.owns(p_rid)) {
 		ReflectionProbeInstance *reflection_instance = reflection_probe_instance_owner.get(p_rid);
 
@@ -3871,6 +3872,12 @@ bool RasterizerSceneGLES2::free(RID p_rid) {
 		reflection_probe_instance_owner.free(p_rid);
 		memdelete(reflection_instance);
 
+	} else if (environment_owner.owns(p_rid)) {
+		Environment *environment = environment_owner.get(p_rid);
+
+		environment_owner.free(p_rid);
+		memdelete(environment);
+
 	} else {
 		return false;
 	}