diff options
author | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-06-15 16:18:13 +0000 |
---|---|---|
committer | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-06-15 16:18:13 +0000 |
commit | 09ba010a1f1966818249e15bb652269a944d1476 (patch) | |
tree | fd8f5e1ebb8807cbcf190b31774ed3449cfb6bc8 /protocols/MSN/msn_misc.cpp | |
parent | 67f1c36da9aca19e37803110aa243280e5cf053b (diff) |
MSN reverted
git-svn-id: http://svn.miranda-ng.org/main/trunk@428 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/MSN/msn_misc.cpp')
-rw-r--r-- | protocols/MSN/msn_misc.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/protocols/MSN/msn_misc.cpp b/protocols/MSN/msn_misc.cpp index ee3d188350..80d9fd46ec 100644 --- a/protocols/MSN/msn_misc.cpp +++ b/protocols/MSN/msn_misc.cpp @@ -22,6 +22,44 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "msn_proto.h"
#include "version.h"
+#if !defined(_UNICODE) && !defined(_WIN64)
+
+typedef LONG (WINAPI pIncrementFunc)(LONG volatile*);
+static pIncrementFunc MyInterlockedIncrement95;
+static pIncrementFunc MyInterlockedIncrementInit;
+
+pIncrementFunc *MyInterlockedIncrement = MyInterlockedIncrementInit;
+
+static CRITICAL_SECTION csInterlocked95;
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// InterlockedIncrement emulation
+
+static LONG WINAPI MyInterlockedIncrement95(LONG volatile* pVal)
+{
+ DWORD ret;
+ EnterCriticalSection(&csInterlocked95);
+ ret=++*pVal;
+ LeaveCriticalSection(&csInterlocked95);
+ return ret;
+}
+
+//there's a possible hole here if too many people call this at the same time, but that doesn't happen
+static LONG WINAPI MyInterlockedIncrementInit(LONG volatile* pVal)
+{
+ DWORD ver = GetVersion();
+ if ((ver & 0x80000000) && LOWORD(ver) == 0x0004)
+ {
+ InitializeCriticalSection(&csInterlocked95);
+ MyInterlockedIncrement = MyInterlockedIncrement95;
+ }
+ else
+ MyInterlockedIncrement = (pIncrementFunc*)InterlockedIncrement;
+
+ return MyInterlockedIncrement(pVal);
+}
+
+#endif
/////////////////////////////////////////////////////////////////////////////////////////
// MirandaStatusToMSN - status helper functions
|