Implement message modes for 9.6

Fix possible crash when closing otclient
Fix private messages
Fix messages in 9.6
This commit is contained in:
Eduardo Bart
2012-07-30 09:29:13 -03:00
parent 1281b04a6a
commit 59b6abfa09
22 changed files with 95 additions and 42 deletions

View File

@@ -47,7 +47,10 @@ void FrameBuffer::internalCreate()
FrameBuffer::~FrameBuffer()
{
assert(!g_app.isTerminated());
#ifndef NDEBUG
if(g_app.isTerminated())
g_logger.warning("FrameBuffer reference not released");
#endif
if(g_graphics.ok() && m_fbo != 0)
glDeleteFramebuffers(1, &m_fbo);
}

View File

@@ -37,7 +37,10 @@ HardwareBuffer::HardwareBuffer(Type type)
HardwareBuffer::~HardwareBuffer()
{
assert(!g_app.isTerminated());
#ifndef NDEBUG
if(g_app.isTerminated())
g_logger.warning("HardwareBuffer reference not released");
#endif
if(g_graphics.ok())
glDeleteBuffers(1, &m_id);
}

View File

@@ -44,7 +44,10 @@ Shader::Shader(Shader::ShaderType shaderType)
Shader::~Shader()
{
assert(!g_app.isTerminated());
#ifndef NDEBUG
if(g_app.isTerminated())
g_logger.warning("Shader reference not released");
#endif
if(g_graphics.ok())
glDeleteShader(m_shaderId);
}

View File

@@ -38,7 +38,10 @@ ShaderProgram::ShaderProgram()
ShaderProgram::~ShaderProgram()
{
assert(!g_app.isTerminated());
#ifndef NDEBUG
if(g_app.isTerminated())
g_logger.warning("ShaderProgram reference not released");
#endif
if(g_graphics.ok())
glDeleteProgram(m_programId);
}

View File

@@ -79,6 +79,10 @@ Texture::Texture(const ImagePtr& image, bool buildMipmaps)
Texture::~Texture()
{
#ifndef NDEBUG
if(g_app.isTerminated())
g_logger.warning("a texture reference was not released");
#endif
// free texture from gl memory
if(g_graphics.ok() && m_id != 0)
glDeleteTextures(1, &m_id);

View File

@@ -37,18 +37,6 @@ void TextureManager::init()
void TextureManager::terminate()
{
#ifndef NDEBUG
// check for leaks
int refs = 0;
for(const auto& it : m_textures) {
if(it.second->ref_count() > 1) {
refs++;
g_logger.debug(stdext::format("texture reference released: %s", it.first));
}
}
if(refs > 0)
g_logger.debug(stdext::format("%d textures references left", refs));
#endif
m_textures.clear();
m_emptyTexture = nullptr;
}