소스 검색

Free dummy renderer objects

These leaked during tests etc.

(cherry picked from commit 666daf47c31307c50a9f0eb08fc5146d0a3e5f32)
A Thousand Ships 1 년 전
부모
커밋
a7099ce880

+ 2 - 0
servers/rendering/dummy/storage/material_storage.h

@@ -77,6 +77,8 @@ public:
 
 	/* SHADER API */
 
+	bool owns_shader(RID p_rid) { return shader_owner.owns(p_rid); }
+
 	virtual RID shader_allocate() override;
 	virtual void shader_initialize(RID p_rid) override;
 	virtual void shader_free(RID p_rid) override;

+ 2 - 0
servers/rendering/dummy/storage/mesh_storage.h

@@ -138,6 +138,8 @@ public:
 
 	/* MULTIMESH API */
 
+	bool owns_multimesh(RID p_rid) { return multimesh_owner.owns(p_rid); }
+
 	virtual RID multimesh_allocate() override;
 	virtual void multimesh_initialize(RID p_rid) override;
 	virtual void multimesh_free(RID p_rid) override;

+ 7 - 0
servers/rendering/dummy/storage/utilities.h

@@ -31,6 +31,7 @@
 #ifndef UTILITIES_DUMMY_H
 #define UTILITIES_DUMMY_H
 
+#include "material_storage.h"
 #include "mesh_storage.h"
 #include "servers/rendering/storage/utilities.h"
 #include "texture_storage.h"
@@ -63,6 +64,12 @@ public:
 		} else if (RendererDummy::MeshStorage::get_singleton()->owns_mesh(p_rid)) {
 			RendererDummy::MeshStorage::get_singleton()->mesh_free(p_rid);
 			return true;
+		} else if (RendererDummy::MeshStorage::get_singleton()->owns_multimesh(p_rid)) {
+			RendererDummy::MeshStorage::get_singleton()->multimesh_free(p_rid);
+			return true;
+		} else if (RendererDummy::MaterialStorage::get_singleton()->owns_shader(p_rid)) {
+			RendererDummy::MaterialStorage::get_singleton()->shader_free(p_rid);
+			return true;
 		}
 		return false;
 	}