summaryrefslogtreecommitdiffstats
path: root/raul/AtomicPtr.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'raul/AtomicPtr.hpp')
-rw-r--r--raul/AtomicPtr.hpp13
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;
};