Add wxThread::MSWGetHandle().

Under MSW a thread has both an ID, returned by wxThread::GetId(), and a
handle, which couldn't be retrieved so far. Add an accessor to do it.

Closes #16170.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76418 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2014-04-27 22:41:50 +00:00
parent 2b7c7464ad
commit ccaebf6520
4 changed files with 22 additions and 0 deletions

View File

@@ -65,6 +65,7 @@ wxMSW:
- Add wxEnhMetaFile::Detach() (Luca Bacci). - Add wxEnhMetaFile::Detach() (Luca Bacci).
- Add support for saving 256*256 32bpp ICOs in PNG format (Artur Wieczorek). - Add support for saving 256*256 32bpp ICOs in PNG format (Artur Wieczorek).
- Keep menu item icon after removing and adding it back (Artur Wieczorek). - Keep menu item icon after removing and adding it back (Artur Wieczorek).
- Add wxThread::MSWGetHandle() (troelsk).
wxOSX/Cocoa: wxOSX/Cocoa:

View File

@@ -583,6 +583,11 @@ public:
// identifies a thread inside a process // identifies a thread inside a process
wxThreadIdType GetId() const; wxThreadIdType GetId() const;
#ifdef __WINDOWS__
// Get the internal OS handle
WXHANDLE MSWGetHandle() const;
#endif // __WINDOWS__
wxThreadKind GetKind() const wxThreadKind GetKind() const
{ return m_isDetached ? wxTHREAD_DETACHED : wxTHREAD_JOINABLE; } { return m_isDetached ? wxTHREAD_DETACHED : wxTHREAD_JOINABLE; }

View File

@@ -1107,6 +1107,15 @@ public:
*/ */
wxThreadIdType GetId() const; wxThreadIdType GetId() const;
/**
Gets the native thread handle.
This method only exists in wxMSW, use GetId() in portable code.
@since 3.1.0
*/
WXHANDLE MSWGetHandle() const;
/** /**
Returns the thread kind as it was given in the ctor. Returns the thread kind as it was given in the ctor.

View File

@@ -1226,6 +1226,13 @@ unsigned long wxThread::GetId() const
return (unsigned long)m_internal->GetId(); return (unsigned long)m_internal->GetId();
} }
WXHANDLE wxThread::MSWGetHandle() const
{
wxCriticalSectionLocker lock(const_cast<wxCriticalSection &>(m_critsect));
return m_internal->GetHandle();
}
bool wxThread::IsRunning() const bool wxThread::IsRunning() const
{ {
wxCriticalSectionLocker lock(const_cast<wxCriticalSection &>(m_critsect)); wxCriticalSectionLocker lock(const_cast<wxCriticalSection &>(m_critsect));