Browse Source

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.
lawnjelly 3 years ago
parent
commit
7134ef90bb
1 changed files with 7 additions and 0 deletions
  1. 7 0
      drivers/gles2/rasterizer_scene_gles2.cpp

+ 7 - 0
drivers/gles2/rasterizer_scene_gles2.cpp

@@ -3875,6 +3875,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);
 
@@ -3892,6 +3893,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;
 	}