]> git.lyx.org Git - lyx.git/blob - src/Timeout.C
Small fixes to compile with compaq cxx
[lyx.git] / src / Timeout.C
1 #include <config.h>
2
3 #include FORMS_H_LOCATION
4
5 #include "Timeout.h"
6 #include "debug.h"
7
8 using std::endl;
9
10 extern "C" {
11         static
12         void C_intern_timeout_cb(int, void * data) 
13         {
14                 Timeout * to = static_cast<Timeout*>(data);
15                 to->callback();
16         }
17 }
18
19
20 Timeout::Timeout()
21         : type(ONETIME), timeout(0), timeout_id(-1),
22          callback_(0), data_(0) {}
23
24
25 Timeout::Timeout(int msec, Type t)
26         : type(t), timeout(msec), timeout_id(-1),
27           callback_(0), data_(0) {}
28
29
30 Timeout::~Timeout() 
31 {
32         stop();
33 }
34
35
36 void Timeout::restart()
37 {
38         stop();
39         start();
40 }
41
42
43 void Timeout::start()
44 {
45         if (timeout_id != -1)
46                 lyxerr << "Timeout::start: already running!" << endl;
47         timeout_id = fl_add_timeout(timeout,
48                                     C_intern_timeout_cb, this);
49 }
50         
51
52 void Timeout::stop()
53 {
54         if (timeout_id != -1) {
55                 fl_remove_timeout(timeout_id);
56                 timeout_id = -1;
57         }
58 }
59
60
61 void Timeout::callback(TimeoutCallback cb, void * data)
62 {
63         callback_ = cb;
64         data_ = data;
65 }
66
67
68 void Timeout::callback()
69 {
70         timeout_id = -1;
71         if (callback_)
72                 callback_(data_);
73         if (type == CONTINOUS)
74                 start();
75 }
76         
77
78 void Timeout::setType(Type t)
79 {
80         type = t;
81 }
82
83
84 void Timeout::setTimeout(int msec)
85 {
86         timeout = msec;
87 }