X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/3f7b163cb754f07ffbf8279a9b8e9f3c8daf526c..2c333dec2921a4d9248a33e4be7bc075f930f859:/lib/base/object.h diff --git a/lib/base/object.h b/lib/base/object.h index 7f823223..67a4606c 100644 --- a/lib/base/object.h +++ b/lib/base/object.h @@ -7,9 +7,7 @@ //#define OBJECT_DEBUG -#ifdef OBJECT_DEBUG - #include -#endif +#include typedef int RESULT; @@ -108,7 +106,7 @@ public: if (!ref) \ delete this; \ } - #elif defined(__ppc__) + #elif defined(__ppc__) || defined(__powerpc__) #define DECLARE_REF(x) \ private: oRefCount ref; \ public: void AddRef(); \ @@ -142,6 +140,28 @@ public: if (!ref) \ delete this; \ } + #elif defined(__i386__) + #define DECLARE_REF(x) \ + private: oRefCount ref; \ + public: void AddRef(); \ + void Release(); + #define DEFINE_REF(c) \ + void c::AddRef() \ + { \ + __asm__ __volatile__( \ + " lock ; incl %0 \n" \ + : "=m" (ref.count) \ + : "m" (ref.count); \ + } \ + void c::Release() \ + { \ + __asm__ __volatile__( \ + " lock ; decl %0 \n" \ + : "=m" (ref.count) \ + : "m" (ref.count); \ + if (!ref) \ + delete this; \ + } #else #warning use non optimized implementation of refcounting. #define DECLARE_REF(x) \