new OBTimer interface

This commit is contained in:
Dana Jansens 2002-11-04 06:06:13 +00:00
parent 578bedc289
commit 7ebccbf39a
5 changed files with 37 additions and 38 deletions

View file

@ -35,17 +35,17 @@ static timeval normalizeTimeval(const timeval &tm)
OBTimer::OBTimer(OBTimerQueueManager *m, OBTimeoutHandler h, OBTimeoutData d)
{
manager = m;
handler = h;
data = d;
_manager = m;
_handler = h;
_data = d;
recur = timing = false;
_recur = _timing = false;
}
OBTimer::~OBTimer(void)
{
if (timing) stop();
if (_timing) stop();
}
@ -68,33 +68,33 @@ void OBTimer::start(void)
{
gettimeofday(&_start, 0);
if (! timing) {
timing = true;
manager->addTimer(this);
if (! _timing) {
_timing = true;
_manager->addTimer(this);
}
}
void OBTimer::stop(void)
{
if (timing) {
timing = false;
if (_timing) {
_timing = false;
manager->removeTimer(this);
_manager->removeTimer(this);
}
}
void OBTimer::fireTimeout(void)
void OBTimer::fire(void)
{
if (handler)
handler(data);
if (_handler)
_handler(_data);
}
timeval OBTimer::timeRemaining(const timeval &tm) const
timeval OBTimer::remainingTime(const timeval &tm) const
{
timeval ret = endpoint();
timeval ret = endTime();
ret.tv_sec -= tm.tv_sec;
ret.tv_usec -= tm.tv_usec;
@ -103,7 +103,7 @@ timeval OBTimer::timeRemaining(const timeval &tm) const
}
timeval OBTimer::endpoint(void) const
timeval OBTimer::endTime(void) const
{
timeval ret;
@ -116,7 +116,7 @@ timeval OBTimer::endpoint(void) const
bool OBTimer::shouldFire(const timeval &tm) const
{
timeval end = endpoint();
timeval end = endTime();
return ! ((tm.tv_sec < end.tv_sec) ||
(tm.tv_sec == end.tv_sec && tm.tv_usec < end.tv_usec));

View file

@ -32,15 +32,15 @@ typedef void (*OBTimeoutHandler)(OBTimeoutData);
class OBTimer {
private:
//! The manager which to add ourself to and remove ourself after we are done
OBTimerQueueManager *manager;
OBTimerQueueManager *_manager;
//! The function to call when the time elapses
OBTimeoutHandler handler;
OBTimeoutHandler _handler;
//! The data which gets passed along to the OBTimeoutHandler
OBTimeoutData data;
OBTimeoutData _data;
//! Determines if the timer is currently started
bool timing;
bool _timing;
//! When this is true, the timer will reset itself to fire again every time
bool recur;
bool _recur;
//! The time at which the timer started
timeval _start;
@ -65,32 +65,32 @@ public:
virtual ~OBTimer();
//! Fires the timer, calling its OBTimeoutHandler
void fireTimeout();
void fire();
//! Returns if the OBTimer is started and timing
inline bool isTiming() const { return timing; }
inline bool timing() const { return _timing; }
//! Returns if the OBTimer is going to repeat
inline bool isRecurring() const { return recur; }
inline bool recurring() const { return _recur; }
//! Gets the amount of time the OBTimer should last before firing
inline const timeval &getTimeout() const { return _timeout; }
inline const timeval &timeout() const { return _timeout; }
//! Gets the time at which the OBTimer started
inline const timeval &getStartTime() const { return _start; }
inline const timeval &startTime() const { return _start; }
//! Gets the amount of time left before the OBTimer fires
timeval timeRemaining(const timeval &tm) const;
timeval remainingTime(const timeval &tm) const;
//! Returns if the OBTimer is past its timeout time, and should fire
bool shouldFire(const timeval &tm) const;
//! Gets the time at which the OBTimer will fire
timeval endpoint() const;
timeval endTime() const;
//! Sets the OBTimer to repeat or not
/*!
@param b If true, the timer is set to repeat; otherwise, it will fire only
once
*/
inline void recurring(bool b) { recur = b; }
inline void setRecurring(bool b) { _recur = b; }
//! Sets the amount of time for the OBTimer to last in milliseconds
/*!
@ -124,7 +124,7 @@ public:
@return true if this OBTimer will fire before 'other'; otherwise, false
*/
bool operator<(const OBTimer& other) const
{ return shouldFire(other.endpoint()); }
{ return shouldFire(other.endTime()); }
};
}

View file

@ -23,7 +23,7 @@ void OBTimerQueueManager::fire()
const OBTimer* const timer = timerList.top();
gettimeofday(&now, 0);
tm = timer->timeRemaining(now);
tm = timer->remainingTime(now);
timeout = &tm;
}
@ -44,8 +44,8 @@ void OBTimerQueueManager::fire()
timerList.pop();
timer->fireTimeout();
if (timer->isRecurring())
timer->fire();
if (timer->recurring())
timer->start();
}
}

View file

@ -1132,7 +1132,7 @@ void Blackbox::reconfigure(void) {
reconfigure_wait = True;
if (! timer->isTiming()) timer->start();
if (! timer->timing()) timer->start();
}

View file

@ -3828,8 +3828,7 @@ void BlackboxWindow::leaveNotifyEvent(const XCrossingEvent*) {
installColormap(False);
if (timer->isTiming())
timer->stop();
timer->stop();
}