Update of /cvsroot/pclasses/pclasses2/src/System
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4090/src/System
Modified Files:
EventQueue.cpp FdListener.posix.cpp
Log Message:
Added missing export-macros.
Made write-end of wakeup-pipe also non-blocking.
Index: FdListener.posix.cpp
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/src/System/FdListener.posix.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- FdListener.posix.cpp 10 Feb 2005 19:13:42 -0000 1.2
+++ FdListener.posix.cpp 11 Feb 2005 12:00:09 -0000 1.3
@@ -98,7 +98,9 @@
if(ret == -1)
throw SystemError(errno, "Could not create wakeup pipe", P_SOURCEINFO);
+ // make pipe nonblocking ...
::fcntl(_wakeupPipe[0], F_SETFL, O_NONBLOCK);
+ ::fcntl(_wakeupPipe[1], F_SETFL, O_NONBLOCK);
_wakeupListener = new WakeupListener(_wakeupPipe[0]);
_listeners.insert(_wakeupListener);
@@ -210,7 +212,7 @@
Private::get_timeout(&timeout, timeout_ms, Private::TIMEOUT_RELATIVE);
int ret = ::select(highest_fd + 1, &read_fds, &write_fds, &error_fds,
- &timeout);
+ &timeout);
if(ret == -1)
{
Index: EventQueue.cpp
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/src/System/EventQueue.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- EventQueue.cpp 10 Feb 2005 19:13:43 -0000 1.2
+++ EventQueue.cpp 11 Feb 2005 12:00:09 -0000 1.3
@@ -81,7 +81,9 @@
EventQueue::EventQueue()
{
+#ifndef WIN32
_private = (void*)&FdListenerList::instance(*this);
+#endif
}
EventQueue::~EventQueue()
@@ -98,9 +100,11 @@
CriticalSection::ScopedLock lck(_eventQueueCs);
_eventQueue.push(ev);
+#ifndef WIN32
// wakeup the FdListener
FdListenerList* lst = (FdListenerList*)_private;
lst->wakeup();
+#endif
}
void EventQueue::wait(Event& ev)
@@ -113,10 +117,12 @@
_eventQueueCs.lock();
if(_eventQueue.empty())
{
- FdListenerList* lst = (FdListenerList*)_private;
_eventQueueCs.unlock();
+#ifndef WIN32
+ FdListenerList* lst = (FdListenerList*)_private;
lst->wait(100000);
+#endif
_eventQueueCs.lock();
if(_eventQueue.empty())
|