diff options
Diffstat (limited to 'src/Timer.hh')
-rw-r--r-- | src/Timer.hh | 84 |
1 files changed, 43 insertions, 41 deletions
diff --git a/src/Timer.hh b/src/Timer.hh index 0cc6bbe..9b48754 100644 --- a/src/Timer.hh +++ b/src/Timer.hh | |||
@@ -1,3 +1,6 @@ | |||
1 | // Timer.hh for fluxbox | ||
2 | // Copyright (c) 2002 Henrik Kinnunen (fluxgen@linuxmail.org) | ||
3 | // | ||
1 | // Timer.hh for Blackbox - An X11 Window Manager | 4 | // Timer.hh for Blackbox - An X11 Window Manager |
2 | // Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net) | 5 | // Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net) |
3 | // | 6 | // |
@@ -13,73 +16,72 @@ | |||
13 | // | 16 | // |
14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 17 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
15 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 18 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
16 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | 19 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
17 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 20 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
18 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | 21 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
21 | 24 | ||
22 | #ifndef _TIMER_HH_ | 25 | #ifndef TIMER_HH |
23 | #define _TIMER_HH_ | 26 | #define TIMER_HH |
24 | 27 | ||
25 | #ifdef HAVE_CONFIG_H | 28 | #ifdef HAVE_CONFIG_H |
26 | #include "../config.h" | 29 | #include "../config.h" |
27 | #endif //HAVE_CONFIG_H | 30 | #endif //HAVE_CONFIG_H |
28 | 31 | ||
29 | #ifdef TIME_WITH_SYS_TIME | 32 | #ifdef TIME_WITH_SYS_TIME |
30 | # include <sys/time.h> | 33 | # include <sys/time.h> |
31 | # include <time.h> | 34 | # include <time.h> |
32 | #else // !TIME_WITH_SYS_TIME | 35 | #else // !TIME_WITH_SYS_TIME |
33 | # ifdef HAVE_SYS_TIME_H | 36 | # ifdef HAVE_SYS_TIME_H |
34 | #include <sys/time.h> | 37 | #include <sys/time.h> |
35 | # else // !HAVE_SYS_TIME_H | 38 | # else // !HAVE_SYS_TIME_H |
36 | # include <time.h> | 39 | # include <time.h> |
37 | # endif // HAVE_SYS_TIME_H | 40 | # endif // HAVE_SYS_TIME_H |
38 | #endif // TIME_WITH_SYS_TIME | 41 | #endif // TIME_WITH_SYS_TIME |
39 | 42 | ||
40 | // forward declaration | 43 | #include <list> |
41 | class BTimer; | ||
42 | class TimeoutHandler; | ||
43 | |||
44 | #include "BaseDisplay.hh" | ||
45 | |||
46 | 44 | ||
47 | class TimeoutHandler { | 45 | class TimeoutHandler { |
48 | public: | 46 | public: |
49 | virtual void timeout(void) = 0; | 47 | virtual void timeout(void) = 0; |
50 | }; | 48 | }; |
51 | 49 | ||
52 | 50 | ||
53 | class BTimer { | 51 | class BTimer { |
54 | friend class BaseDisplay; | 52 | public: |
55 | private: | 53 | explicit BTimer(TimeoutHandler *); |
56 | BaseDisplay *display; | 54 | virtual ~BTimer(void); |
57 | TimeoutHandler *handler; | ||
58 | int timing, once; | ||
59 | |||
60 | timeval _start, _timeout; | ||
61 | |||
62 | |||
63 | protected: | ||
64 | void fireTimeout(void); | ||
65 | 55 | ||
56 | inline int isTiming(void) const { return m_timing; } | ||
57 | inline int doOnce(void) const { return m_once; } | ||
66 | 58 | ||
67 | public: | 59 | inline const timeval &getTimeout(void) const { return m_timeout; } |
68 | BTimer(BaseDisplay *, TimeoutHandler *); | 60 | inline const timeval &getStartTime(void) const { return m_start; } |
69 | virtual ~BTimer(void); | ||
70 | 61 | ||
71 | inline const int &isTiming(void) const { return timing; } | 62 | inline void fireOnce(bool once) { m_once = once; } |
72 | inline const int &doOnce(void) const { return once; } | ||
73 | 63 | ||
74 | inline const timeval &getTimeout(void) const { return _timeout; } | 64 | void setTimeout(long); |
75 | inline const timeval &getStartTime(void) const { return _start; } | 65 | void setTimeout(timeval); |
66 | void start(void); | ||
67 | void stop(void); | ||
68 | static void updateTimers(int fd); | ||
69 | protected: | ||
70 | void fireTimeout(void); | ||
76 | 71 | ||
77 | inline void fireOnce(int o) { once = o; } | 72 | private: |
73 | static void addTimer(BTimer *timer); | ||
74 | static void removeTimer(BTimer *timer); | ||
75 | |||
76 | typedef std::list<BTimer *> TimerList; | ||
77 | static TimerList m_timerlist; | ||
78 | |||
79 | TimeoutHandler *m_handler; | ||
80 | |||
81 | bool m_timing, m_once; | ||
82 | |||
83 | timeval m_start, m_timeout; | ||
78 | 84 | ||
79 | void setTimeout(long); | ||
80 | void setTimeout(timeval); | ||
81 | void start(void); | ||
82 | void stop(void); | ||
83 | }; | 85 | }; |
84 | 86 | ||
85 | 87 | ||