From a5cc517ff644214ce0aec79348277c7d2ff17e98 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Wed, 26 Nov 2008 17:24:00 +0000 Subject: [PATCH] make wxThread::OnExit private and not public (change tested on wxMSW and wxGTK) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56984 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/thread.h | 30 +++++++++++++++--------------- interface/wx/thread.h | 24 +++++++++++++----------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/include/wx/thread.h b/include/wx/thread.h index f9751d23c1..f595b3191e 100644 --- a/include/wx/thread.h +++ b/include/wx/thread.h @@ -271,7 +271,7 @@ private: #if wxCRITSECT_IS_MUTEX // implement wxCriticalSection using mutexes - inline wxCriticalSection::wxCriticalSection( wxCriticalSectionType critSecType ) + inline wxCriticalSection::wxCriticalSection( wxCriticalSectionType critSecType ) : m_mutex( critSecType == wxCRITSEC_DEFAULT ? wxMUTEX_RECURSIVE : wxMUTEX_DEFAULT ) { } inline wxCriticalSection::~wxCriticalSection() { } @@ -558,11 +558,6 @@ public: wxThreadKind GetKind() const { return m_isDetached ? wxTHREAD_DETACHED : wxTHREAD_JOINABLE; } - // called when the thread exits - in the context of this thread - // - // NB: this function will not be called if the thread is Kill()ed - virtual void OnExit() { } - // Returns true if the thread was asked to terminate: this function should // be called by the thread from time to time, otherwise the main thread // will be left forever in Delete()! @@ -585,6 +580,11 @@ private: wxThread(const wxThread&); wxThread& operator=(const wxThread&); + // called when the thread exits - in the context of this thread + // + // NB: this function will not be called if the thread is Kill()ed + virtual void OnExit() { } + friend class wxThreadInternal; // the (platform-dependent) thread class implementation @@ -639,14 +639,14 @@ private: // sets it to NULL, then the thread object still // exists and can be killed wxCriticalSectionLocker locker(m_critSection); - + if ( m_thread ) { m_thread->Kill(); - + if ( m_kind == wxTHREAD_JOINABLE ) delete m_thread; - + m_thread = NULL; } } @@ -678,9 +678,9 @@ public: wxThread *GetThread() const { wxCriticalSectionLocker locker((wxCriticalSection&)m_critSection); - + wxThread* thread = m_thread; - + return thread; } @@ -688,7 +688,7 @@ protected: wxThread *m_thread; wxThreadKind m_kind; wxCriticalSection m_critSection; // To guard the m_thread variable - + friend class wxThreadHelperThread; }; @@ -696,16 +696,16 @@ protected: inline void *wxThreadHelperThread::Entry() { void * const result = m_owner.Entry(); - + wxCriticalSectionLocker locker(m_owner.m_critSection); - + // Detached thread will be deleted after returning, so make sure // wxThreadHelper::GetThread will not return an invalid pointer. // And that wxThreadHelper::KillThread will not try to kill // an already deleted thread if ( m_owner.m_kind == wxTHREAD_DETACHED ) m_owner.m_thread = NULL; - + return result; } diff --git a/interface/wx/thread.h b/interface/wx/thread.h index c454f8e925..20d0f92a60 100644 --- a/interface/wx/thread.h +++ b/interface/wx/thread.h @@ -1058,17 +1058,6 @@ public: */ wxThreadError Kill(); - /** - Called when the thread exits. - - This function is called in the context of the thread associated with the - wxThread object, not in the context of the main thread. - This function will not be called if the thread was @ref Kill() killed. - - This function should never be called directly. - */ - virtual void OnExit(); - /** Suspends the thread. @@ -1227,6 +1216,19 @@ protected: OnExit() will be called just before exiting. */ void Exit(ExitCode exitcode = 0); + +private: + + /** + Called when the thread exits. + + This function is called in the context of the thread associated with the + wxThread object, not in the context of the main thread. + This function will not be called if the thread was @ref Kill() killed. + + This function should never be called directly. + */ + virtual void OnExit(); }; -- 2.45.2