diff options
Diffstat (limited to 'raul/AtomicPtr.hpp')
-rw-r--r-- | raul/AtomicPtr.hpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/raul/AtomicPtr.hpp b/raul/AtomicPtr.hpp index 365b25d..ae51cf0 100644 --- a/raul/AtomicPtr.hpp +++ b/raul/AtomicPtr.hpp @@ -28,23 +28,24 @@ class AtomicPtr { public: inline AtomicPtr() - { g_atomic_pointer_set(&_val, NULL); } + { g_atomic_pointer_set((volatile gpointer*)&_val, NULL); } inline AtomicPtr(const AtomicPtr& copy) - { g_atomic_pointer_set(&_val, copy.get()); } + { g_atomic_pointer_set((volatile gpointer*)(&_val), (gpointer)copy.get()); } inline T* get() const - { return (T*)g_atomic_pointer_get(&_val); } + { return (T*)g_atomic_pointer_get((volatile gpointer*)(&_val)); } inline void operator=(T* val) - { g_atomic_pointer_set(&_val, val); } + { g_atomic_pointer_set((volatile gpointer*)(&_val), (gpointer)val); } /** Set value to newval iff current value is oldval */ inline bool compare_and_exchange(int oldval, int newval) - { return g_atomic_pointer_compare_and_exchange(&_val, oldval, newval); } + { return g_atomic_pointer_compare_and_exchange((volatile gpointer*)(&_val), oldval, newval); } private: - mutable T volatile* _val; + //mutable T* volatile _val; + mutable T* volatile _val; }; |