From 99da44095aa6fa503bc54f39cfb447be7edf88a1 Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Wed, 13 Nov 2013 22:54:01 +0100 Subject: Fix for NULL arithmetic compiler warning in Linux. --- source/OSSupport/IsThread.cpp | 7 +++---- source/OSSupport/IsThread.h | 13 +++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/source/OSSupport/IsThread.cpp b/source/OSSupport/IsThread.cpp index e1ef84c17..4da9f9949 100644 --- a/source/OSSupport/IsThread.cpp +++ b/source/OSSupport/IsThread.cpp @@ -53,7 +53,7 @@ static void SetThreadName( DWORD dwThreadID, LPCSTR szThreadName) cIsThread::cIsThread(const AString & iThreadName) : m_ThreadName(iThreadName), m_ShouldTerminate(false), - m_Handle(NULL) + m_Handle(NULL_HANDLE) { } @@ -73,8 +73,7 @@ cIsThread::~cIsThread() bool cIsThread::Start(void) { - ASSERT(m_Handle == NULL); // Has already started one thread? - + ASSERT(m_Handle == NULL_HANDLE); // Has already started one thread? #ifdef _WIN32 // Create the thread suspended, so that the mHandle variable is valid in the thread procedure DWORD ThreadID = 0; @@ -111,7 +110,7 @@ bool cIsThread::Start(void) void cIsThread::Stop(void) { - if (m_Handle == NULL) + if (m_Handle == NULL_HANDLE) { return; } diff --git a/source/OSSupport/IsThread.h b/source/OSSupport/IsThread.h index 2ea8bf6f9..b8784ea33 100644 --- a/source/OSSupport/IsThread.h +++ b/source/OSSupport/IsThread.h @@ -51,15 +51,28 @@ public: protected: AString m_ThreadName; + // Value used for "no handle": + #ifdef _WIN32 + #define NULL_HANDLE NULL + #else + #define NULL_HANDLE 0 + #endif + #ifdef _WIN32 HANDLE m_Handle; static DWORD_PTR __stdcall thrExecute(LPVOID a_Param) { + // Create a window so that the thread can be identified by 3rd party tools: HWND IdentificationWnd = CreateWindow("STATIC", ((cIsThread *)a_Param)->m_ThreadName.c_str(), 0, 0, 0, 0, WS_OVERLAPPED, NULL, NULL, NULL, NULL); + + // Run the thread: ((cIsThread *)a_Param)->Execute(); + + // Destroy the identification window: DestroyWindow(IdentificationWnd); + return 0; } -- cgit v1.2.3