Browse Source

fix static-init issue

David Rose 17 years ago
parent
commit
941c9ba732
2 changed files with 11 additions and 3 deletions
  1. 10 2
      panda/src/pgraph/shaderGeneratorBase.cxx
  2. 1 1
      panda/src/pgraph/shaderGeneratorBase.h

+ 10 - 2
panda/src/pgraph/shaderGeneratorBase.cxx

@@ -15,7 +15,7 @@
 #include "shaderGeneratorBase.h"
 #include "shaderGeneratorBase.h"
 
 
 TypeHandle ShaderGeneratorBase::_type_handle;
 TypeHandle ShaderGeneratorBase::_type_handle;
-PT(ShaderGeneratorBase) ShaderGeneratorBase::_default_generator;
+ShaderGeneratorBase *ShaderGeneratorBase::_default_generator = NULL;
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: ShaderGeneratorBase::Constructor
 //     Function: ShaderGeneratorBase::Constructor
@@ -52,5 +52,13 @@ get_default() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void ShaderGeneratorBase::
 void ShaderGeneratorBase::
 set_default(ShaderGeneratorBase *generator) {
 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();
+    }
+  }
 }
 }

+ 1 - 1
panda/src/pgraph/shaderGeneratorBase.h

@@ -24,7 +24,7 @@
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 class EXPCL_PANDA_PGRAPH ShaderGeneratorBase : public TypedWritableReferenceCount {
 class EXPCL_PANDA_PGRAPH ShaderGeneratorBase : public TypedWritableReferenceCount {
 private:
 private:
-  static PT(ShaderGeneratorBase) _default_generator;
+  static ShaderGeneratorBase *_default_generator;
 
 
 protected:
 protected:
   ShaderGeneratorBase();
   ShaderGeneratorBase();