Update of /cvsroot/pclasses/pclasses2/src/System
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24622/src/System
Modified Files:
FdListener.h FdListener.posix.cpp
Log Message:
- Added some code to not wakeup the FdListener if running in the same thread
Index: FdListener.posix.cpp
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/src/System/FdListener.posix.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- FdListener.posix.cpp 20 May 2005 14:21:58 -0000 1.6
+++ FdListener.posix.cpp 6 Jun 2005 12:01:19 -0000 1.7
@@ -19,6 +19,7 @@
***************************************************************************/
#include "pclasses/Trace.h"
+#include "pclasses/System/Thread.h"
#include "FdListener.h"
#include "timeout.h"
@@ -93,7 +94,7 @@
InstMap FdListenerList::_theLists;
FdListenerList::FdListenerList(EventQueue& evq) throw(SystemError)
-: _eventQueue(evq)
+: _eventQueue(evq), _threadId(Thread::threadId())
{
// we use a pipe for wakeup signaling ...
int ret = ::pipe(_wakeupPipe);
@@ -131,8 +132,15 @@
void FdListenerList::wakeup()
{
- P_TRACE(FdListenerList) << "wakeup(): waking up FdListenerList...";
- ::write(_wakeupPipe[1], "W", 1);
+ if(Thread::threadId() != _threadId)
+ {
+ P_TRACE(FdListenerList) << "wakeup(): waking up FdListenerList...";
+ ::write(_wakeupPipe[1], "W", 1);
+ }
+ else
+ {
+ P_TRACE(FdListenerList) << "wakeup(): not needed, called in same thread";
+ }
}
FdListenerList& FdListenerList::instance(EventQueue& evq)
Index: FdListener.h
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/src/System/FdListener.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- FdListener.h 23 Apr 2005 17:47:07 -0000 1.3
+++ FdListener.h 6 Jun 2005 12:01:19 -0000 1.4
@@ -93,6 +93,7 @@
ListenerSet _listeners;
CriticalSection _listenersCs;
+ unsigned long _threadId;
static std::map<
EventQueue*,
|