diff --git a/panda/src/pgraph/shaderGeneratorBase.cxx b/panda/src/pgraph/shaderGeneratorBase.cxx index 08d2d81063..7bb1562380 100644 --- a/panda/src/pgraph/shaderGeneratorBase.cxx +++ b/panda/src/pgraph/shaderGeneratorBase.cxx @@ -15,7 +15,7 @@ #include "shaderGeneratorBase.h" TypeHandle ShaderGeneratorBase::_type_handle; -PT(ShaderGeneratorBase) ShaderGeneratorBase::_default_generator; +ShaderGeneratorBase *ShaderGeneratorBase::_default_generator = NULL; //////////////////////////////////////////////////////////////////// // Function: ShaderGeneratorBase::Constructor @@ -52,5 +52,13 @@ get_default() { //////////////////////////////////////////////////////////////////// void ShaderGeneratorBase:: set_default(ShaderGeneratorBase *generator) { - _default_generator = generator; + if (generator != _default_generator) { + if (_default_generator != (ShaderGeneratorBase *)NULL) { + unref_delete(_default_generator); + } + _default_generator = generator; + if (_default_generator != (ShaderGeneratorBase *)NULL) { + _default_generator->ref(); + } + } } diff --git a/panda/src/pgraph/shaderGeneratorBase.h b/panda/src/pgraph/shaderGeneratorBase.h index 56dd81bc0e..08ba493635 100644 --- a/panda/src/pgraph/shaderGeneratorBase.h +++ b/panda/src/pgraph/shaderGeneratorBase.h @@ -24,7 +24,7 @@ //////////////////////////////////////////////////////////////////// class EXPCL_PANDA_PGRAPH ShaderGeneratorBase : public TypedWritableReferenceCount { private: - static PT(ShaderGeneratorBase) _default_generator; + static ShaderGeneratorBase *_default_generator; protected: ShaderGeneratorBase();