Browse Source

Merge pull request #760 from eightyeight/fix-thread-statics

Fixed thread statics
Daniel Buckmaster 11 years ago
parent
commit
84ebe885e3
1 changed files with 3 additions and 1 deletions
  1. 3 1
      Engine/source/core/threadStatic.h

+ 3 - 1
Engine/source/core/threadStatic.h

@@ -52,6 +52,7 @@ public:
    static const U32 getListIndex(){ return mListIndex; }
 
    virtual void *getMemInstPtr() = 0;
+   virtual const void *getConstMemInstPtr() const = 0;
    virtual const dsize_t getMemInstSize() const = 0;
 
 #ifdef TORQUE_ENABLE_THREAD_STATIC_METRICS
@@ -143,6 +144,7 @@ private:
 public:
    TorqueThreadStatic( T instanceVal ) : mInstance( instanceVal ) {}
    virtual void *getMemInstPtr() { return &mInstance; }
+   virtual const void *getConstMemInstPtr() const { return &mInstance; }
 
    // I am not sure these are needed, and I don't want to create confusing-to-debug code
 #if 0
@@ -181,7 +183,7 @@ public: \
    _##name##TorqueThreadStatic() : TorqueThreadStatic<type>( initalvalue ) {} \
    virtual const dsize_t getMemInstSize() const { return sizeof( type ); } \
    type &_cast() { return *reinterpret_cast<type *>( getMemInstPtr() ); } \
-   const type &_const_cast() const { return *reinterpret_cast<const type *>( getMemInstPtr() ); } \
+   const type &_const_cast() const { return *reinterpret_cast<const type *>( getConstMemInstPtr() ); } \
 }; \
 static _##name##TorqueThreadStatic name##TorqueThreadStatic; \
 static _TorqueThreadStaticReg _##name##TTSReg( reinterpret_cast<_TorqueThreadStatic *>( & name##TorqueThreadStatic ) )