-// -*- mode: C++; indent-tabs-mode: nil; -*-
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
#ifdef HAVE_CONFIG_H
# include "../config.h"
namespace otk {
-void OBTimerQueueManager::fire()
+void TimerQueueManager::fire(bool wait)
{
fd_set rfds;
timeval now, tm, *timeout = (timeval *) 0;
- const int xfd = ConnectionNumber(otk::OBDisplay::display);
+ const int xfd = ConnectionNumber(Display::display);
FD_ZERO(&rfds);
FD_SET(xfd, &rfds); // break on any x events
- if (! timerList.empty()) {
- const OBTimer* const timer = timerList.top();
-
- gettimeofday(&now, 0);
- tm = timer->remainingTime(now);
-
- timeout = &tm;
+ if (wait) {
+ if (! timerList.empty()) {
+ const Timer* const timer = timerList.top();
+
+ gettimeofday(&now, 0);
+ tm = timer->remainingTime(now);
+
+ timeout = &tm;
+ }
+
+ select(xfd + 1, &rfds, 0, 0, timeout);
}
- select(xfd + 1, &rfds, 0, 0, timeout);
-
// check for timer timeout
gettimeofday(&now, 0);
// timer->start() and timer->shouldFire() is within the timer's period
// then the timer will keep firing. This should be VERY near impossible.
while (! timerList.empty()) {
- OBTimer *timer = timerList.top();
+ Timer *timer = timerList.top();
if (! timer->shouldFire(now))
break;
}
-void OBTimerQueueManager::addTimer(OBTimer *timer)
+void TimerQueueManager::addTimer(Timer *timer)
{
assert(timer);
timerList.push(timer);
}
-void OBTimerQueueManager::removeTimer(OBTimer* timer)
+void TimerQueueManager::removeTimer(Timer* timer)
{
assert(timer);
timerList.release(timer);