浏览代码

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 3 年之前
父节点
当前提交
cd371c45b7
共有 1 个文件被更改,包括 7 次插入0 次删除
  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;
 	}