Skip to content

Commit f14f695

Browse files
committed
Systems destructor fix
1 parent e0fa44c commit f14f695

File tree

5 files changed

+17
-7
lines changed

5 files changed

+17
-7
lines changed

engine/includes/resources/resource.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ class ENGINE_EXPORT Resource : public Object {
2828
public:
2929
Resource();
3030
Resource(const Resource &origin);
31-
~Resource() override;
3231

3332
State state() const;
3433

engine/includes/systems/resourcesystem.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ class ENGINE_EXPORT ResourceSystem : public System {
5454

5555
void processState(Resource *resource);
5656

57+
void removeObject(Object *object) override;
58+
5759
private:
5860
ResourceSystem::Dictionary m_indexMap;
5961

engine/src/engine.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,15 @@ Engine::Engine(const char *path) {
181181
Engine::~Engine() {
182182
PROFILE_FUNCTION();
183183

184+
for(auto it : m_serial) {
185+
delete it;
186+
}
187+
188+
for(auto it : m_pool) {
189+
delete it->m_system;
190+
delete it;
191+
}
192+
184193
delete m_threadPool;
185194

186195
if(m_platform) {

engine/src/resources/resource.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,6 @@ Resource::Resource(const Resource &origin) :
4848
m_referenceCount(origin.m_referenceCount) {
4949

5050
}
51-
52-
Resource::~Resource() {
53-
//assert(m_referenceCount == 0);
54-
55-
Engine::resourceSystem()->deleteFromCahe(this);
56-
}
5751
/*!
5852
Subscribes \a callback for \a object to handle resource status.
5953
Increases reference count.

engine/src/systems/resourcesystem.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,12 @@ void ResourceSystem::processState(Resource *resource) {
281281
}
282282
}
283283

284+
void ResourceSystem::removeObject(Object *object) {
285+
ObjectSystem::removeObject(object);
286+
287+
deleteFromCahe(static_cast<Resource *>(object));
288+
}
289+
284290
Resource *ResourceSystem::resource(TString &path) const {
285291
{
286292
auto it = m_indexMap.find(path);

0 commit comments

Comments
 (0)