From 004b53c590d2cf882a76e9f4c923b62d00a2c262 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sun, 7 Jun 2015 16:52:19 +0200 Subject: [PATCH] Renderer/Renderer: Replace listeners by signals Former-commit-id: c1293f7f7cc31c4122ba866fc44d93188917ad93 --- .../NDK/Components/CameraComponent.inl | 2 +- SDK/src/NDK/Components/CameraComponent.cpp | 4 +- include/Nazara/Core/Signal.hpp | 3 +- include/Nazara/Renderer/Context.hpp | 3 + include/Nazara/Renderer/Renderer.hpp | 4 + include/Nazara/Utility/IndexBuffer.hpp | 3 + include/Nazara/Utility/VertexBuffer.hpp | 3 + include/Nazara/Utility/VertexDeclaration.hpp | 3 + src/Nazara/Graphics/Camera.cpp | 4 +- src/Nazara/Graphics/TextSprite.cpp | 18 +- src/Nazara/Graphics/View.cpp | 4 +- src/Nazara/Renderer/Context.cpp | 2 + src/Nazara/Renderer/Renderer.cpp | 257 ++++++++---------- src/Nazara/Utility/Font.cpp | 6 +- src/Nazara/Utility/IndexBuffer.cpp | 2 +- src/Nazara/Utility/SimpleTextDrawer.cpp | 8 +- src/Nazara/Utility/VertexBuffer.cpp | 2 +- src/Nazara/Utility/VertexDeclaration.cpp | 2 +- 18 files changed, 160 insertions(+), 170 deletions(-) diff --git a/SDK/include/NDK/Components/CameraComponent.inl b/SDK/include/NDK/Components/CameraComponent.inl index f66e08a15..89dab5c8f 100644 --- a/SDK/include/NDK/Components/CameraComponent.inl +++ b/SDK/include/NDK/Components/CameraComponent.inl @@ -140,7 +140,7 @@ namespace Ndk { m_target = renderTarget; if (m_target) - m_targetReleaseSlot = NazaraConnect(*m_target, OnRenderTargetRelease, OnRenderTargetRelease); + m_targetReleaseSlot = NazaraConnectThis(*m_target, OnRenderTargetRelease, OnRenderTargetRelease); else NazaraDisconnect(m_targetReleaseSlot); } diff --git a/SDK/src/NDK/Components/CameraComponent.cpp b/SDK/src/NDK/Components/CameraComponent.cpp index d4d57a0f0..ae32ef04d 100644 --- a/SDK/src/NDK/Components/CameraComponent.cpp +++ b/SDK/src/NDK/Components/CameraComponent.cpp @@ -47,7 +47,7 @@ namespace Ndk void CameraComponent::OnAttached() { if (m_entity->HasComponent()) - m_nodeInvalidationSlot = NazaraConnect(m_entity->GetComponent(), OnNodeInvalidation, OnNodeInvalidated); + m_nodeInvalidationSlot = NazaraConnectThis(m_entity->GetComponent(), OnNodeInvalidation, OnNodeInvalidated); InvalidateViewMatrix(); } @@ -57,7 +57,7 @@ namespace Ndk if (IsComponent(component)) { NodeComponent& nodeComponent = static_cast(component); - m_nodeInvalidationSlot = NazaraConnect(nodeComponent, OnNodeInvalidation, OnNodeInvalidated); + m_nodeInvalidationSlot = NazaraConnectThis(nodeComponent, OnNodeInvalidation, OnNodeInvalidated); InvalidateViewMatrix(); } diff --git a/include/Nazara/Core/Signal.hpp b/include/Nazara/Core/Signal.hpp index d06ddd0c5..5cde5fdc5 100644 --- a/include/Nazara/Core/Signal.hpp +++ b/include/Nazara/Core/Signal.hpp @@ -17,7 +17,8 @@ #define NazaraSlotType(Class, SignalName) Class::SignalName ## Type::ConnectionGuard #define NazaraSlot(Class, SignalName, SlotName) NazaraSlotType(Class, SignalName) SlotName -#define NazaraConnect(Instance, SignalName, Callback) (Instance).SignalName.Connect(this, Callback) +#define NazaraConnect(Instance, SignalName, Callback) (Instance).SignalName.Connect(Callback) +#define NazaraConnectThis(Instance, SignalName, Callback) (Instance).SignalName.Connect(this, Callback) #define NazaraDisconnect(SlotName) SlotName.GetConnection().Disconnect() diff --git a/include/Nazara/Renderer/Context.hpp b/include/Nazara/Renderer/Context.hpp index a7c0f5043..d7577e2c1 100644 --- a/include/Nazara/Renderer/Context.hpp +++ b/include/Nazara/Renderer/Context.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -49,6 +50,8 @@ class NAZARA_API NzContext : public NzRefCounted static const NzContext* GetReference(); static const NzContext* GetThreadContext(); + NazaraSignal(OnContextRelease, const NzContext*); //< me + private: static bool Initialize(); static void Uninitialize(); diff --git a/include/Nazara/Renderer/Renderer.hpp b/include/Nazara/Renderer/Renderer.hpp index 50f8b0717..615647231 100644 --- a/include/Nazara/Renderer/Renderer.hpp +++ b/include/Nazara/Renderer/Renderer.hpp @@ -110,8 +110,12 @@ class NAZARA_API NzRenderer private: static void EnableInstancing(bool instancing); static bool EnsureStateUpdate(); + static void OnContextRelease(const NzContext* context); + static void OnIndexBufferRelease(const NzIndexBuffer* indexBuffer); static void OnShaderReleased(const NzShader* shader); static void OnTextureReleased(const NzTexture* texture); + static void OnVertexBufferRelease(const NzVertexBuffer* vertexBuffer); + static void OnVertexDeclarationRelease(const NzVertexDeclaration* vertexDeclaration); static void UpdateMatrix(nzMatrixType type); static unsigned int s_moduleReferenceCounter; diff --git a/include/Nazara/Utility/IndexBuffer.hpp b/include/Nazara/Utility/IndexBuffer.hpp index 54c7348e1..d00eabf09 100644 --- a/include/Nazara/Utility/IndexBuffer.hpp +++ b/include/Nazara/Utility/IndexBuffer.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include class NzIndexBuffer; @@ -66,6 +67,8 @@ class NAZARA_API NzIndexBuffer : public NzRefCounted template static NzIndexBufferRef New(Args&&... args); + NazaraSignal(OnIndexBufferRelease, const NzIndexBuffer*); //< me + private: NzBufferRef m_buffer; bool m_largeIndices; diff --git a/include/Nazara/Utility/VertexBuffer.hpp b/include/Nazara/Utility/VertexBuffer.hpp index 2b6e956f4..79327cc70 100644 --- a/include/Nazara/Utility/VertexBuffer.hpp +++ b/include/Nazara/Utility/VertexBuffer.hpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -64,6 +65,8 @@ class NAZARA_API NzVertexBuffer : public NzRefCounted template static NzVertexBufferRef New(Args&&... args); + NazaraSignal(OnVertexBufferRelease, const NzVertexBuffer*); //< me + private: NzBufferRef m_buffer; NzVertexDeclarationConstRef m_vertexDeclaration; diff --git a/include/Nazara/Utility/VertexDeclaration.hpp b/include/Nazara/Utility/VertexDeclaration.hpp index 700d54e10..1be137e36 100644 --- a/include/Nazara/Utility/VertexDeclaration.hpp +++ b/include/Nazara/Utility/VertexDeclaration.hpp @@ -12,6 +12,7 @@ #include #include #include +#include #include class NzVertexDeclaration; @@ -46,6 +47,8 @@ class NAZARA_API NzVertexDeclaration : public NzRefCounted static bool IsTypeSupported(nzComponentType type); template static NzVertexDeclarationRef New(Args&&... args); + NazaraSignal(OnVertexDeclarationRelease, const NzVertexDeclaration*); //< me + private: static bool Initialize(); static void Uninitialize(); diff --git a/src/Nazara/Graphics/Camera.cpp b/src/Nazara/Graphics/Camera.cpp index c738cfe64..57890903a 100644 --- a/src/Nazara/Graphics/Camera.cpp +++ b/src/Nazara/Graphics/Camera.cpp @@ -163,8 +163,8 @@ void NzCamera::SetTarget(const NzRenderTarget* renderTarget) if (m_target) { - m_targetReleaseSlot = NazaraConnect(*m_target, OnRenderTargetRelease, OnRenderTargetRelease); - m_targetResizeSlot = NazaraConnect(*m_target, OnRenderTargetSizeChange, OnRenderTargetSizeChange); + m_targetReleaseSlot = NazaraConnectThis(*m_target, OnRenderTargetRelease, OnRenderTargetRelease); + m_targetResizeSlot = NazaraConnectThis(*m_target, OnRenderTargetSizeChange, OnRenderTargetSizeChange); } else { diff --git a/src/Nazara/Graphics/TextSprite.cpp b/src/Nazara/Graphics/TextSprite.cpp index 8419b0408..7b2769b07 100644 --- a/src/Nazara/Graphics/TextSprite.cpp +++ b/src/Nazara/Graphics/TextSprite.cpp @@ -36,9 +36,9 @@ m_verticesUpdated(sprite.m_verticesUpdated) const NzAbstractAtlas* atlas = it->first; AtlasSlots& slots = m_atlases[atlas]; - slots.clearSlot = NazaraConnect(*atlas, OnAtlasCleared, OnAtlasInvalidated); - slots.layerChangeSlot = NazaraConnect(*atlas, OnAtlasLayerChange, OnAtlasLayerChange); - slots.releaseSlot = NazaraConnect(*atlas, OnAtlasRelease, OnAtlasInvalidated); + slots.clearSlot = NazaraConnectThis(*atlas, OnAtlasCleared, OnAtlasInvalidated); + slots.layerChangeSlot = NazaraConnectThis(*atlas, OnAtlasLayerChange, OnAtlasLayerChange); + slots.releaseSlot = NazaraConnectThis(*atlas, OnAtlasRelease, OnAtlasInvalidated); } } @@ -153,9 +153,9 @@ void NzTextSprite::Update(const NzAbstractTextDrawer& drawer) { AtlasSlots& slots = m_atlases[atlas]; - slots.clearSlot = NazaraConnect(*atlas, OnAtlasCleared, OnAtlasInvalidated); - slots.layerChangeSlot = NazaraConnect(*atlas, OnAtlasLayerChange, OnAtlasLayerChange); - slots.releaseSlot = NazaraConnect(*atlas, OnAtlasRelease, OnAtlasInvalidated); + slots.clearSlot = NazaraConnectThis(*atlas, OnAtlasCleared, OnAtlasInvalidated); + slots.layerChangeSlot = NazaraConnectThis(*atlas, OnAtlasLayerChange, OnAtlasLayerChange); + slots.releaseSlot = NazaraConnectThis(*atlas, OnAtlasRelease, OnAtlasInvalidated); } } @@ -277,9 +277,9 @@ NzTextSprite& NzTextSprite::operator=(const NzTextSprite& text) const NzAbstractAtlas* atlas = it->first; AtlasSlots& slots = m_atlases[atlas]; - slots.clearSlot = NazaraConnect(*atlas, OnAtlasCleared, OnAtlasInvalidated); - slots.layerChangeSlot = NazaraConnect(*atlas, OnAtlasLayerChange, OnAtlasLayerChange); - slots.releaseSlot = NazaraConnect(*atlas, OnAtlasRelease, OnAtlasInvalidated); + slots.clearSlot = NazaraConnectThis(*atlas, OnAtlasCleared, OnAtlasInvalidated); + slots.layerChangeSlot = NazaraConnectThis(*atlas, OnAtlasLayerChange, OnAtlasLayerChange); + slots.releaseSlot = NazaraConnectThis(*atlas, OnAtlasRelease, OnAtlasInvalidated); } // On ne copie pas les sommets finaux car il est très probable que nos paramètres soient modifiés et qu'ils doivent être régénérés de toute façon diff --git a/src/Nazara/Graphics/View.cpp b/src/Nazara/Graphics/View.cpp index eb3e9e871..08cd6fbd7 100644 --- a/src/Nazara/Graphics/View.cpp +++ b/src/Nazara/Graphics/View.cpp @@ -218,8 +218,8 @@ void NzView::SetTarget(const NzRenderTarget* renderTarget) m_target = renderTarget; if (m_target) { - m_targetReleaseSlot = NazaraConnect(*m_target, OnRenderTargetRelease, OnRenderTargetRelease); - m_targetResizeSlot = NazaraConnect(*m_target, OnRenderTargetSizeChange, OnRenderTargetSizeChange); + m_targetReleaseSlot = NazaraConnectThis(*m_target, OnRenderTargetRelease, OnRenderTargetRelease); + m_targetResizeSlot = NazaraConnectThis(*m_target, OnRenderTargetSizeChange, OnRenderTargetSizeChange); } else { diff --git a/src/Nazara/Renderer/Context.cpp b/src/Nazara/Renderer/Context.cpp index 3066cd269..b66f35a6b 100644 --- a/src/Nazara/Renderer/Context.cpp +++ b/src/Nazara/Renderer/Context.cpp @@ -132,6 +132,8 @@ namespace NzContext::~NzContext() { + OnContextRelease(this); + Destroy(); } diff --git a/src/Nazara/Renderer/Renderer.cpp b/src/Nazara/Renderer/Renderer.cpp index cd3eebc05..08e4bce12 100644 --- a/src/Nazara/Renderer/Renderer.cpp +++ b/src/Nazara/Renderer/Renderer.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include @@ -85,19 +85,12 @@ namespace struct VAO_Entry { - VAO_Entry(NzObjectListener* listener, int indexBufferIndex, int vertexBufferIndex, int vertexDeclarationIndex, int instancingDeclarationIndex) : - indexBufferListener(listener, indexBufferIndex), - vertexBufferListener(listener, vertexBufferIndex), - instancingDeclarationListener(listener, instancingDeclarationIndex), - vertexDeclarationListener(listener, vertexDeclarationIndex) - { - } - GLuint vao; - NzIndexBufferConstListener indexBufferListener; - NzVertexBufferConstListener vertexBufferListener; - NzVertexDeclarationConstListener instancingDeclarationListener; - NzVertexDeclarationConstListener vertexDeclarationListener; + + NazaraSlot(NzIndexBuffer, OnIndexBufferRelease, onIndexBufferReleaseSlot); + NazaraSlot(NzVertexBuffer, OnVertexBufferRelease, onVertexBufferReleaseSlot); + NazaraSlot(NzVertexDeclaration, OnVertexDeclarationRelease, onInstancingDeclarationReleaseSlot); + NazaraSlot(NzVertexDeclaration, OnVertexDeclarationRelease, onVertexDeclarationReleaseSlot); }; using VAO_Key = std::tuple; @@ -105,13 +98,9 @@ namespace struct Context_Entry { - Context_Entry(NzObjectListener* listener, int index) : - contextListener(listener, index) - { - } - - NzContextConstListener contextListener; VAO_Map vaoMap; + + NazaraSlot(NzContext, OnContextRelease, onReleaseSlot); }; using Context_Map = std::unordered_map; @@ -140,123 +129,6 @@ namespace unsigned int s_maxTextureSize; unsigned int s_maxTextureUnit; unsigned int s_maxVertexAttribs; - - class ObjectListener : public NzObjectListener - { - public: - void OnObjectReleased(const NzRefCounted* object, int index) override - { - switch (index) - { - case ObjectType_Context: - { - const NzContext* context = static_cast(object); - s_vaos.erase(context); - break; - } - - case ObjectType_IndexBuffer: - { - const NzIndexBuffer* indexBuffer = static_cast(object); - for (auto& pair : s_vaos) - { - const NzContext* context = pair.first; - VAO_Map& vaos = pair.second.vaoMap; - - auto it = vaos.begin(); - while (it != vaos.end()) - { - const VAO_Key& key = it->first; - const NzIndexBuffer* vaoIndexBuffer = std::get<0>(key); - - if (vaoIndexBuffer == indexBuffer) - { - // Suppression du VAO: - // Comme celui-ci est local à son contexte de création, sa suppression n'est possible que si - // son contexte d'origine est actif, sinon il faudra le mettre en file d'attente - // Ceci est géré par la méthode OpenGL::DeleteVertexArray - - NzOpenGL::DeleteVertexArray(context, it->second.vao); - vaos.erase(it++); - } - else - ++it; - } - } - break; - } - - case ObjectType_VertexBuffer: - { - const NzVertexBuffer* vertexBuffer = static_cast(object); - for (auto& pair : s_vaos) - { - const NzContext* context = pair.first; - VAO_Map& vaos = pair.second.vaoMap; - - auto it = vaos.begin(); - while (it != vaos.end()) - { - const VAO_Key& key = it->first; - const NzVertexBuffer* vaoVertexBuffer = std::get<1>(key); - - if (vaoVertexBuffer == vertexBuffer) - { - // Suppression du VAO: - // Comme celui-ci est local à son contexte de création, sa suppression n'est possible que si - // son contexte d'origine est actif, sinon il faudra le mettre en file d'attente - // Ceci est géré par la méthode OpenGL::DeleteVertexArray - - NzOpenGL::DeleteVertexArray(context, it->second.vao); - vaos.erase(it++); - } - else - ++it; - } - } - break; - } - - case ObjectType_VertexDeclaration: - { - const NzVertexDeclaration* vertexDeclaration = static_cast(object); - for (auto& pair : s_vaos) - { - const NzContext* context = pair.first; - VAO_Map& vaos = pair.second.vaoMap; - - auto it = vaos.begin(); - while (it != vaos.end()) - { - const VAO_Key& key = it->first; - const NzVertexDeclaration* vaoVertexDeclaration = std::get<2>(key); - const NzVertexDeclaration* vaoInstancingDeclaration = std::get<3>(key); - - if (vaoVertexDeclaration == vertexDeclaration || vaoInstancingDeclaration == vertexDeclaration) - { - // Suppression du VAO: - // Comme celui-ci est local à son contexte de création, sa suppression n'est possible que si - // son contexte d'origine est actif, sinon il faudra le mettre en file d'attente - // Ceci est géré par la méthode OpenGL::DeleteVertexArray - - NzOpenGL::DeleteVertexArray(context, it->second.vao); - vaos.erase(it++); - } - else - ++it; - } - } - break; - } - - default: - NazaraInternalError("Unknown resource type"); - break; - } - } - }; - - ObjectListener s_listener; } void NzRenderer::BeginCondition(const NzGpuQuery& query, nzGpuQueryCondition condition) @@ -1748,8 +1620,8 @@ bool NzRenderer::EnsureStateUpdate() auto it = s_vaos.find(context); if (it == s_vaos.end()) { - Context_Entry entry(&s_listener, ObjectType_Context); - entry.contextListener = context; + Context_Entry entry; + entry.onReleaseSlot = context->OnContextRelease.Connect(OnContextRelease); it = s_vaos.insert(std::make_pair(context, std::move(entry))).first; } @@ -1770,13 +1642,19 @@ bool NzRenderer::EnsureStateUpdate() glBindVertexArray(s_currentVAO); // On l'ajoute à notre liste - VAO_Entry entry(&s_listener, ObjectType_IndexBuffer, ObjectType_VertexBuffer, ObjectType_VertexDeclaration, ObjectType_VertexDeclaration); - entry.indexBufferListener = std::get<0>(key); - entry.instancingDeclarationListener = std::get<3>(key); - entry.vertexBufferListener = std::get<1>(key); - entry.vertexDeclarationListener = std::get<2>(key); + VAO_Entry entry; entry.vao = s_currentVAO; + // Connect the slots + if (s_indexBuffer) + entry.onIndexBufferReleaseSlot = s_indexBuffer->OnIndexBufferRelease.Connect(OnIndexBufferRelease); + + if (instancingDeclaration) + entry.onInstancingDeclarationReleaseSlot = instancingDeclaration->OnVertexDeclarationRelease.Connect(OnVertexDeclarationRelease); + + entry.onVertexBufferReleaseSlot = s_vertexBuffer->OnVertexBufferRelease.Connect(OnVertexBufferRelease); + entry.onVertexDeclarationReleaseSlot = vertexDeclaration->OnVertexDeclarationRelease.Connect(OnVertexDeclarationRelease); + vaoIt = vaoMap.insert(std::make_pair(key, std::move(entry))).first; // Et on indique qu'on veut le programmer @@ -1982,6 +1860,40 @@ bool NzRenderer::EnsureStateUpdate() return true; } +void NzRenderer::OnContextRelease(const NzContext* context) +{ + s_vaos.erase(context); +} + +void NzRenderer::OnIndexBufferRelease(const NzIndexBuffer* indexBuffer) +{ + for (auto& pair : s_vaos) + { + const NzContext* context = pair.first; + VAO_Map& vaos = pair.second.vaoMap; + + auto it = vaos.begin(); + while (it != vaos.end()) + { + const VAO_Key& key = it->first; + const NzIndexBuffer* vaoIndexBuffer = std::get<0>(key); + + if (vaoIndexBuffer == indexBuffer) + { + // Suppression du VAO: + // Comme celui-ci est local à son contexte de création, sa suppression n'est possible que si + // son contexte d'origine est actif, sinon il faudra le mettre en file d'attente + // Ceci est géré par la méthode OpenGL::DeleteVertexArray + + NzOpenGL::DeleteVertexArray(context, it->second.vao); + vaos.erase(it++); + } + else + ++it; + } + } +} + void NzRenderer::OnShaderReleased(const NzShader* shader) { if (s_shader == shader) @@ -2002,6 +1914,65 @@ void NzRenderer::OnTextureReleased(const NzTexture* texture) } } +void NzRenderer::OnVertexBufferRelease(const NzVertexBuffer* vertexBuffer) +{ + for (auto& pair : s_vaos) + { + const NzContext* context = pair.first; + VAO_Map& vaos = pair.second.vaoMap; + + auto it = vaos.begin(); + while (it != vaos.end()) + { + const VAO_Key& key = it->first; + const NzVertexBuffer* vaoVertexBuffer = std::get<1>(key); + + if (vaoVertexBuffer == vertexBuffer) + { + // Suppression du VAO: + // Comme celui-ci est local à son contexte de création, sa suppression n'est possible que si + // son contexte d'origine est actif, sinon il faudra le mettre en file d'attente + // Ceci est géré par la méthode OpenGL::DeleteVertexArray + + NzOpenGL::DeleteVertexArray(context, it->second.vao); + vaos.erase(it++); + } + else + ++it; + } + } +} + +void NzRenderer::OnVertexDeclarationRelease(const NzVertexDeclaration* vertexDeclaration) +{ + for (auto& pair : s_vaos) + { + const NzContext* context = pair.first; + VAO_Map& vaos = pair.second.vaoMap; + + auto it = vaos.begin(); + while (it != vaos.end()) + { + const VAO_Key& key = it->first; + const NzVertexDeclaration* vaoVertexDeclaration = std::get<2>(key); + const NzVertexDeclaration* vaoInstancingDeclaration = std::get<3>(key); + + if (vaoVertexDeclaration == vertexDeclaration || vaoInstancingDeclaration == vertexDeclaration) + { + // Suppression du VAO: + // Comme celui-ci est local à son contexte de création, sa suppression n'est possible que si + // son contexte d'origine est actif, sinon il faudra le mettre en file d'attente + // Ceci est géré par la méthode OpenGL::DeleteVertexArray + + NzOpenGL::DeleteVertexArray(context, it->second.vao); + vaos.erase(it++); + } + else + ++it; + } + } +} + void NzRenderer::UpdateMatrix(nzMatrixType type) { #ifdef NAZARA_DEBUG diff --git a/src/Nazara/Utility/Font.cpp b/src/Nazara/Utility/Font.cpp index 10ec2904d..4e5b97ff3 100644 --- a/src/Nazara/Utility/Font.cpp +++ b/src/Nazara/Utility/Font.cpp @@ -298,9 +298,9 @@ void NzFont::SetAtlas(const std::shared_ptr& atlas) m_atlas = atlas; if (m_atlas) { - m_atlasClearedSlot = NazaraConnect(*m_atlas, OnAtlasCleared, OnAtlasCleared); - m_atlasLayerChangeSlot = NazaraConnect(*m_atlas, OnAtlasLayerChange, OnAtlasLayerChange); - m_atlasReleaseSlot = NazaraConnect(*m_atlas, OnAtlasRelease, OnAtlasRelease); + m_atlasClearedSlot = NazaraConnectThis(*m_atlas, OnAtlasCleared, OnAtlasCleared); + m_atlasLayerChangeSlot = NazaraConnectThis(*m_atlas, OnAtlasLayerChange, OnAtlasLayerChange); + m_atlasReleaseSlot = NazaraConnectThis(*m_atlas, OnAtlasRelease, OnAtlasRelease); } else { diff --git a/src/Nazara/Utility/IndexBuffer.cpp b/src/Nazara/Utility/IndexBuffer.cpp index a6c693820..8176b9614 100644 --- a/src/Nazara/Utility/IndexBuffer.cpp +++ b/src/Nazara/Utility/IndexBuffer.cpp @@ -42,7 +42,7 @@ m_startOffset(indexBuffer.m_startOffset) NzIndexBuffer::~NzIndexBuffer() { - NotifyDestroy(); + OnIndexBufferRelease(this); } unsigned int NzIndexBuffer::ComputeCacheMissCount() const diff --git a/src/Nazara/Utility/SimpleTextDrawer.cpp b/src/Nazara/Utility/SimpleTextDrawer.cpp index 6ae4637a3..1a9a8b97b 100644 --- a/src/Nazara/Utility/SimpleTextDrawer.cpp +++ b/src/Nazara/Utility/SimpleTextDrawer.cpp @@ -112,10 +112,10 @@ void NzSimpleTextDrawer::SetFont(NzFont* font) m_font = font; if (m_font) { - m_atlasChangedSlot = NazaraConnect(*m_font, OnFontAtlasChanged, OnFontInvalidated); - m_atlasLayerChangedSlot = NazaraConnect(*m_font, OnFontAtlasLayerChanged, OnFontInvalidated); - m_fontReleaseSlot = NazaraConnect(*m_font, OnFontRelease, OnFontRelease); - m_glyphCacheClearedSlot = NazaraConnect(*m_font, OnFontGlyphCacheCleared, OnFontInvalidated); + m_atlasChangedSlot = NazaraConnectThis(*m_font, OnFontAtlasChanged, OnFontInvalidated); + m_atlasLayerChangedSlot = NazaraConnectThis(*m_font, OnFontAtlasLayerChanged, OnFontInvalidated); + m_fontReleaseSlot = NazaraConnectThis(*m_font, OnFontRelease, OnFontRelease); + m_glyphCacheClearedSlot = NazaraConnectThis(*m_font, OnFontGlyphCacheCleared, OnFontInvalidated); } else { diff --git a/src/Nazara/Utility/VertexBuffer.cpp b/src/Nazara/Utility/VertexBuffer.cpp index 463917e17..db0e67aee 100644 --- a/src/Nazara/Utility/VertexBuffer.cpp +++ b/src/Nazara/Utility/VertexBuffer.cpp @@ -38,7 +38,7 @@ m_vertexCount(vertexBuffer.m_vertexCount) NzVertexBuffer::~NzVertexBuffer() { - NotifyDestroy(); + OnVertexBufferRelease(this); } bool NzVertexBuffer::Fill(const void* data, unsigned int startVertex, unsigned int length, bool forceDiscard) diff --git a/src/Nazara/Utility/VertexDeclaration.cpp b/src/Nazara/Utility/VertexDeclaration.cpp index dd605def5..8471b1d79 100644 --- a/src/Nazara/Utility/VertexDeclaration.cpp +++ b/src/Nazara/Utility/VertexDeclaration.cpp @@ -27,7 +27,7 @@ m_stride(declaration.m_stride) NzVertexDeclaration::~NzVertexDeclaration() { - NotifyDestroy(); + OnVertexDeclarationRelease(this); } void NzVertexDeclaration::DisableComponent(nzVertexComponent component)