summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorA Thousand Ships <96648715+AThousandShips@users.noreply.github.com>2024-01-29 18:48:47 +0100
committerA Thousand Ships <96648715+AThousandShips@users.noreply.github.com>2024-01-29 19:28:29 +0100
commit666daf47c31307c50a9f0eb08fc5146d0a3e5f32 (patch)
tree0b1d5e7c2cd532d152d7c70a96dd0091b71d937c
parentfa48a51183567934984b381ad8ec281cb24d66ba (diff)
downloadredot-engine-666daf47c31307c50a9f0eb08fc5146d0a3e5f32.tar.gz
Free dummy renderer objects
These leaked during tests etc.
-rw-r--r--servers/rendering/dummy/storage/material_storage.h2
-rw-r--r--servers/rendering/dummy/storage/mesh_storage.h2
-rw-r--r--servers/rendering/dummy/storage/utilities.h7
3 files changed, 11 insertions, 0 deletions
diff --git a/servers/rendering/dummy/storage/material_storage.h b/servers/rendering/dummy/storage/material_storage.h
index 4fd178ac88..4a956cd25d 100644
--- a/servers/rendering/dummy/storage/material_storage.h
+++ b/servers/rendering/dummy/storage/material_storage.h
@@ -76,6 +76,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;
diff --git a/servers/rendering/dummy/storage/mesh_storage.h b/servers/rendering/dummy/storage/mesh_storage.h
index a7351655bd..ce0e80e8c8 100644
--- a/servers/rendering/dummy/storage/mesh_storage.h
+++ b/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;
diff --git a/servers/rendering/dummy/storage/utilities.h b/servers/rendering/dummy/storage/utilities.h
index 72327fbf4d..2497451fdc 100644
--- a/servers/rendering/dummy/storage/utilities.h
+++ b/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;
}