26
26
27
27
#ifndef CCUTIL_OCRCLASS_H_
28
28
#define CCUTIL_OCRCLASS_H_
29
-
30
- #ifndef __GNUC__
31
- #ifdef _WIN32
32
- #include " gettimeofday.h"
33
- #endif
34
- #else
35
- #include < sys/time.h>
36
- #endif
37
29
#include < ctime>
30
+ #include < chrono>
38
31
#include " host.h"
39
32
40
33
/* Maximum lengths of various strings*/
@@ -130,7 +123,8 @@ class ETEXT_DESC { // output header
130
123
PROGRESS_FUNC progress_callback; // / called whenever progress increases
131
124
PROGRESS_FUNC2 progress_callback2;// / monitor-aware progress callback
132
125
void * cancel_this; // / this or other data for cancel
133
- struct timeval end_time; // / Time to stop. Expected to be set only
126
+ std::chrono::steady_clock::time_point end_time;
127
+ // / Time to stop. Expected to be set only
134
128
// / by call to set_deadline_msecs().
135
129
EANYCODE_CHAR text[1 ]; // / character data
136
130
@@ -144,29 +138,25 @@ class ETEXT_DESC { // output header
144
138
progress_callback(nullptr ),
145
139
progress_callback2(&default_progress_func),
146
140
cancel_this(nullptr ) {
147
- end_time. tv_sec = 0 ;
148
- end_time. tv_usec = 0 ;
141
+ end_time = std::chrono::time_point<std::chrono::steady_clock,
142
+ std::chrono::milliseconds>() ;
149
143
}
150
144
151
145
// Sets the end time to be deadline_msecs milliseconds from now.
152
146
void set_deadline_msecs (int32_t deadline_msecs) {
153
- gettimeofday (&end_time, nullptr );
154
- int32_t deadline_secs = deadline_msecs / 1000 ;
155
- end_time.tv_sec += deadline_secs;
156
- end_time.tv_usec += (deadline_msecs - deadline_secs * 1000 ) * 1000 ;
157
- if (end_time.tv_usec > 1000000 ) {
158
- end_time.tv_usec -= 1000000 ;
159
- ++end_time.tv_sec ;
147
+ if (deadline_msecs > 0 ) {
148
+ end_time = std::chrono::steady_clock::now () +
149
+ std::chrono::milliseconds (deadline_msecs);
160
150
}
161
151
}
162
152
163
153
// Returns false if we've not passed the end_time, or have not set a deadline.
164
154
bool deadline_exceeded () const {
165
- if (end_time.tv_sec == 0 && end_time. tv_usec == 0 ) return false ;
166
- struct timeval now;
167
- gettimeofday (&now, nullptr ) ;
168
- return ( now. tv_sec > end_time. tv_sec || (now. tv_sec == end_time. tv_sec &&
169
- now. tv_usec > end_time. tv_usec ) );
155
+ if (end_time.time_since_epoch () ==
156
+ std::chrono::steady_clock::duration::zero ())
157
+ return false ;
158
+ auto now = std::chrono::steady_clock::now ();
159
+ return ( now > end_time);
170
160
}
171
161
172
162
private:
0 commit comments