aboutsummaryrefslogtreecommitdiff
path: root/src/FbTk/Timer.hh
diff options
context:
space:
mode:
authorfluxgen <fluxgen>2003-08-11 15:58:34 (GMT)
committerfluxgen <fluxgen>2003-08-11 15:58:34 (GMT)
commitaf9349661477a4bf15c48df94f498f3955cc7c09 (patch)
tree6c8cde9c981b0238ea91492cb320fad040f6fb31 /src/FbTk/Timer.hh
parent586f78c56e9c4fd8b13788695bf7030f16d410a9 (diff)
downloadfluxbox-af9349661477a4bf15c48df94f498f3955cc7c09.zip
fluxbox-af9349661477a4bf15c48df94f498f3955cc7c09.tar.bz2
executing a command on timeout instead of calling a TimeoutHandler
Diffstat (limited to 'src/FbTk/Timer.hh')
-rw-r--r--src/FbTk/Timer.hh33
1 files changed, 14 insertions, 19 deletions
diff --git a/src/FbTk/Timer.hh b/src/FbTk/Timer.hh
index 6c40155..961d4d7 100644
--- a/src/FbTk/Timer.hh
+++ b/src/FbTk/Timer.hh
@@ -25,6 +25,8 @@
25#ifndef FBTK_TIMER_HH 25#ifndef FBTK_TIMER_HH
26#define FBTK_TIMER_HH 26#define FBTK_TIMER_HH
27 27
28#include "RefCount.hh"
29
28#include <ctime> 30#include <ctime>
29#include <list> 31#include <list>
30 32
@@ -44,36 +46,23 @@
44 46
45namespace FbTk { 47namespace FbTk {
46 48
47/// Handles timeouts 49class Command;
48/**
49 Inherit this to have a timed object, that calls
50 timeout function when the time is out
51*/
52class TimeoutHandler {
53public:
54 /// called when the time is out
55 virtual void timeout() = 0;
56};
57 50
58/** 51/**
59 Handles TimeoutHandles 52 Handles Timeout
60*/ 53*/
61class Timer { 54class Timer {
62public: 55public:
63 explicit Timer(TimeoutHandler *handler); 56 Timer();
57 explicit Timer(RefCount<Command> &handler);
64 virtual ~Timer(); 58 virtual ~Timer();
65 59
66 inline int isTiming() const { return m_timing; }
67 inline int doOnce() const { return m_once; }
68
69 inline const timeval &getTimeout() const { return m_timeout; }
70 inline const timeval &getStartTime() const { return m_start; }
71
72 inline void fireOnce(bool once) { m_once = once; } 60 inline void fireOnce(bool once) { m_once = once; }
73 /// set timeout 61 /// set timeout
74 void setTimeout(long val); 62 void setTimeout(long val);
75 /// set timeout 63 /// set timeout
76 void setTimeout(timeval val); 64 void setTimeout(timeval val);
65 void setCommand(RefCount<Command> &cmd);
77 /// start timing 66 /// start timing
78 void start(); 67 void start();
79 /// stop timing 68 /// stop timing
@@ -81,6 +70,12 @@ public:
81 /// update all timers 70 /// update all timers
82 static void updateTimers(int file_descriptor); 71 static void updateTimers(int file_descriptor);
83 72
73 inline int isTiming() const { return m_timing; }
74 inline int doOnce() const { return m_once; }
75
76 inline const timeval &getTimeout() const { return m_timeout; }
77 inline const timeval &getStartTime() const { return m_start; }
78
84protected: 79protected:
85 /// force a timeout 80 /// force a timeout
86 void fireTimeout(); 81 void fireTimeout();
@@ -94,7 +89,7 @@ private:
94 typedef std::list<Timer *> TimerList; 89 typedef std::list<Timer *> TimerList;
95 static TimerList m_timerlist; ///< list of all timers 90 static TimerList m_timerlist; ///< list of all timers
96 91
97 TimeoutHandler *m_handler; ///< handler 92 RefCount<Command> m_handler; ///< what to do on a timeout
98 93
99 bool m_timing; ///< clock running? 94 bool m_timing; ///< clock running?
100 bool m_once; ///< do timeout only once? 95 bool m_once; ///< do timeout only once?