Only try to clean stuff if kart model is unique
This commit is contained in:
parent
f8c6de316a
commit
c85425c473
@ -54,16 +54,16 @@ public:
|
|||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
~ShaderFilesManager()
|
~ShaderFilesManager()
|
||||||
{
|
{
|
||||||
clearAllShaderFiles();
|
removeAllShaderFiles();
|
||||||
}
|
}
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
void clearAllShaderFiles()
|
void removeAllShaderFiles()
|
||||||
{
|
{
|
||||||
clearUnusedShaderFiles();
|
removeUnusedShaderFiles();
|
||||||
assert(m_shader_files_loaded.empty());
|
assert(m_shader_files_loaded.empty());
|
||||||
}
|
}
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
void clearUnusedShaderFiles()
|
void removeUnusedShaderFiles()
|
||||||
{
|
{
|
||||||
for (auto it = m_shader_files_loaded.begin();
|
for (auto it = m_shader_files_loaded.begin();
|
||||||
it != m_shader_files_loaded.end();)
|
it != m_shader_files_loaded.end();)
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "config/player_manager.hpp"
|
#include "config/player_manager.hpp"
|
||||||
#include "graphics/central_settings.hpp"
|
#include "graphics/central_settings.hpp"
|
||||||
#include "graphics/material_manager.hpp"
|
#include "graphics/material_manager.hpp"
|
||||||
|
#include "graphics/shader_files_manager.hpp"
|
||||||
#include "graphics/stk_tex_manager.hpp"
|
#include "graphics/stk_tex_manager.hpp"
|
||||||
#include "graphics/sp/sp_shader_manager.hpp"
|
#include "graphics/sp/sp_shader_manager.hpp"
|
||||||
#include "graphics/sp/sp_texture_manager.hpp"
|
#include "graphics/sp/sp_texture_manager.hpp"
|
||||||
@ -112,10 +113,11 @@ KartProperties::KartProperties(const std::string &filename)
|
|||||||
KartProperties::~KartProperties()
|
KartProperties::~KartProperties()
|
||||||
{
|
{
|
||||||
#ifndef SERVER_ONLY
|
#ifndef SERVER_ONLY
|
||||||
m_kart_model = nullptr;
|
if (CVS->isGLSL() && m_kart_model.use_count() == 1)
|
||||||
if (CVS->isGLSL())
|
|
||||||
{
|
{
|
||||||
|
m_kart_model = nullptr;
|
||||||
SP::SPShaderManager::get()->removeUnusedShaders();
|
SP::SPShaderManager::get()->removeUnusedShaders();
|
||||||
|
ShaderFilesManager::getInstance()->removeUnusedShaderFiles();
|
||||||
SP::SPTextureManager::get()->removeUnusedTextures();
|
SP::SPTextureManager::get()->removeUnusedTextures();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -251,7 +251,7 @@ bool handleContextMenuAction(s32 cmd_id)
|
|||||||
Log::info("Debug", "Reloading shaders...");
|
Log::info("Debug", "Reloading shaders...");
|
||||||
SP::SPShaderManager::get()->unloadAll();
|
SP::SPShaderManager::get()->unloadAll();
|
||||||
ShaderBase::killShaders();
|
ShaderBase::killShaders();
|
||||||
ShaderFilesManager::getInstance()->clearAllShaderFiles();
|
ShaderFilesManager::getInstance()->removeAllShaderFiles();
|
||||||
SP::SPShaderManager::get()->initAll();
|
SP::SPShaderManager::get()->initAll();
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user