瀏覽代碼

fix static-init issue

David Rose 17 年之前
父節點
當前提交
941c9ba732
共有 2 個文件被更改,包括 11 次插入3 次删除
  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"
 
 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();
+    }
+  }
 }

+ 1 - 1
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();