projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
compilation fixes for some cases
[wxWidgets.git]
/
src
/
gtk
/
threadno.cpp
diff --git
a/src/gtk/threadno.cpp
b/src/gtk/threadno.cpp
index 06acae02606801fe4633579055102e4eaf4ca83f..435f9213948abab926b74704713f84e5a27f68d5 100644
(file)
--- a/
src/gtk/threadno.cpp
+++ b/
src/gtk/threadno.cpp
@@
-1,51
+1,64
@@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
-// Name:
thread
.cpp
-// Purpose:
No
thread support
-// Author:
Original from Wolfram Gloger/
Guilhem Lavaux
+// Name:
src/gtk/threadno
.cpp
+// Purpose:
Solaris
thread support
+// Author: Guilhem Lavaux
// Modified by:
// Created: 04/22/98
// RCS-ID: $Id$
// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998)
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// Modified by:
// Created: 04/22/98
// RCS-ID: $Id$
// Copyright: (c) Wolfram Gloger (1996, 1997); Guilhem Lavaux (1998)
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
-#pragma implementation "thread.h"
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#include "wx/thread.h"
+
+#ifndef WX_PRECOMP
+ #include "wx/log.h"
+ #include "wx/module.h"
#endif
#include "wx/wx.h"
#endif
#include "wx/wx.h"
-wxMutex::wxMutex(
void
)
+wxMutex::wxMutex()
{
{
-
m_locked = FALSE
;
+
m_locked = 0
;
}
}
-wxMutex::~wxMutex(
void
)
+wxMutex::~wxMutex()
{
{
+ if (m_locked)
+ wxLogDebug( "wxMutex warning: destroying a locked mutex (%d locks)", m_locked );
}
}
-
MutexError wxMutex::Lock(void
)
+
wxMutexError wxMutex::Lock(
)
{
{
-
m_locked = TRUE
;
-
return
NO_ERROR;
+
m_locked++
;
+
return wxMUTEX_
NO_ERROR;
}
}
-
MutexError wxMutex::TryLock(void
)
+
wxMutexError wxMutex::TryLock(
)
{
{
- m_locked = TRUE;
- return NO_ERROR;
+ if (m_locked > 0)
+ return wxMUTEX_BUSY;
+ m_locked++;
+ return wxMUTEX_NO_ERROR;
}
}
-
MutexError wxMutex::Unlock(void
)
+
wxMutexError wxMutex::Unlock(
)
{
{
- m_locked = FALSE;
- return NO_ERROR;
+ if (m_locked == 0)
+ return wxMUTEX_UNLOCKED;
+ m_locked--;
+ return wxMUTEX_NO_ERROR;
}
}
-wxCondition::wxCondition(
void
)
+wxCondition::wxCondition()
{
}
{
}
-wxCondition::~wxCondition(
void
)
+wxCondition::~wxCondition()
{
}
{
}
@@
-54,103
+67,124
@@
void wxCondition::Wait(wxMutex& WXUNUSED(mutex))
}
bool wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec),
}
bool wxCondition::Wait(wxMutex& WXUNUSED(mutex), unsigned long WXUNUSED(sec),
-
unsigned long WXUNUSED(nsec))
+ unsigned long WXUNUSED(nsec))
{
{
-
return FALSE
;
+
return false
;
}
}
-void wxCondition::Signal(
void
)
+void wxCondition::Signal()
{
}
{
}
-void wxCondition::Broadcast(
void
)
+void wxCondition::Broadcast()
{
}
{
}
-struct wxThreadPrivate {
- int thread_id;
- void* exit_status;
+struct wxThreadInternal
+{
+ int thread_id;
+ void* exit_status;
};
};
-
ThreadError wxThread::Create(void
)
+
wxThreadError wxThread::Create(
)
{
{
- p_internal->exit_status = Entry();
- OnExit();
-
return
NO_ERROR;
+
p_internal->exit_status = Entry();
+
OnExit();
+
return wxTHREAD_
NO_ERROR;
}
}
-
ThreadError wxThread::Destroy(void
)
+
wxThreadError wxThread::Destroy(
)
{
{
-
return
RUNNING;
+
return wxTHREAD_NOT_
RUNNING;
}
}
-
void wxThread::DifferDestroy(void
)
+
wxThreadError wxThread::Pause(
)
{
{
+ return wxTHREAD_NOT_RUNNING;
}
}
-void wxThread::TestDestroy(void)
+wxThreadError wxThread::Resume()
+{
+ return wxTHREAD_NOT_RUNNING;
+}
+
+void wxThread::DeferDestroy( bool WXUNUSED(on) )
+{
+}
+
+void wxThread::TestDestroy()
{
}
void *wxThread::Join()
{
{
}
void *wxThread::Join()
{
- return p_internal->exit_status;
+
return p_internal->exit_status;
}
}
-unsigned long wxThread::GetID()
+unsigned long wxThread::GetID()
const
{
{
- return 0;
+
return 0;
}
}
-bool wxThread::IsMain(
void
)
+bool wxThread::IsMain()
{
{
-
return TRUE
;
+
return true
;
}
}
-bool wxThread::Is
Alive(void)
+bool wxThread::Is
Running() const
{
{
- return FALSE;
+ return false;
+}
+
+bool wxThread::IsAlive() const
+{
+ return false;
}
void wxThread::SetPriority(int WXUNUSED(prio)) { }
}
void wxThread::SetPriority(int WXUNUSED(prio)) { }
-int wxThread::GetPriority(
void) {
}
+int wxThread::GetPriority(
) const { return 0;
}
-wxMutex wxMainMutex; // controls access to all GUI functions
+wxMutex
*
wxMainMutex; // controls access to all GUI functions
wxThread::wxThread()
{
wxThread::wxThread()
{
-
p_internal = new wxThreadPrivate
();
+
p_internal = new wxThreadInternal
();
}
wxThread::~wxThread()
{
}
wxThread::~wxThread()
{
-
Cancel
();
- Join();
- delete p_internal;
+
Destroy
();
+
Join();
+
delete p_internal;
}
// The default callback just joins the thread and throws away the result.
void wxThread::OnExit()
{
}
// The default callback just joins the thread and throws away the result.
void wxThread::OnExit()
{
- Join();
+ Join();
+}
+
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+
+bool wxThreadModule::OnInit()
+{
+ wxMainMutex = new wxMutex();
+ wxMainMutex->Lock();
+ return true;
}
}
-// Global initialization
-static void wxThreadInit(void *WXUNUSED(client))
+void wxThreadModule::OnExit()
{
{
- wxMainMutex.Lock();
+ wxMainMutex->Unlock();
+ delete wxMainMutex;
}
}
-// Global cleanup
-static void wxThreadExit(void *WXUNUSED(client))
+
+
+void wxMutexGuiEnter()
{
{
- wxMainMutex.Unlock();
}
}
-// Let automatic initialization be performed from wxCommonInit().
-static struct
-wxThreadGlobal {
- wxThreadGlobal() {
- wxRegisterModuleFunction(wxThreadInit, wxThreadExit, NULL);
- }
-} dummy;
+void wxMutexGuiLeave()
+{
+}