Skip to content

Commit 2dd753e

Browse files
committed
replace VS implementation of gettimeofday with std::chrono::steady_clock::now(); fixes #2038
1 parent f4a34e6 commit 2dd753e

File tree

6 files changed

+13
-99
lines changed

6 files changed

+13
-99
lines changed

CMakeLists.txt

-7
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ include_directories(src/dict)
173173
include_directories(src/lstm)
174174
include_directories(src/opencl)
175175
include_directories(src/textord)
176-
include_directories(src/vs2010/port)
177176
include_directories(src/viewer)
178177
include_directories(src/wordrec)
179178

@@ -210,12 +209,6 @@ file(GLOB tesseract_hdr
210209
src/viewer/*.h
211210
src/wordrec/*.h
212211
)
213-
if (WIN32)
214-
file(GLOB tesseract_win32_src "src/vs2010/port/*.cpp")
215-
file(GLOB tesseract_win32_hdr "src/vs2010/port/*.h")
216-
set(tesseract_src ${tesseract_src} ${tesseract_win32_src})
217-
set(tesseract_hdr ${tesseract_hdr} ${tesseract_win32_hdr})
218-
endif()
219212

220213
set(tesseract_src ${tesseract_src}
221214
src/api/baseapi.cpp

cmake/SourceGroups.cmake

-1
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,4 @@ source_group("lstm" "${SSRC}/lstm/${H_CPP}")
3434
source_group("opencl" "${SSRC}/opencl/${H_CPP}")
3535
source_group("textord" "${SSRC}/textord/${H_CPP}")
3636
source_group("viewer" "${SSRC}/viewer/${H_CPP}")
37-
source_group("port" "${SSRC}/vs2010/port/${H_CPP}")
3837
source_group("wordrec" "${SSRC}/wordrec/${H_CPP}")

cppan.yml

-5
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ projects:
6464
- src/viewer/.*\.h
6565
- src/wordrec/.*\.h
6666

67-
- src/vs2010/port/.*
68-
6967
exclude_from_build:
7068
- src/api/tesseractmain.cpp
7169
- src/viewer/svpaint.cpp
@@ -81,7 +79,6 @@ projects:
8179
- src/lstm
8280
- src/opencl
8381
- src/textord
84-
- src/vs2010/port
8582
- src/viewer
8683
- src/wordrec
8784
#public:
@@ -140,8 +137,6 @@ projects:
140137
${SDIR}/src/arch/intsimdmatrixavx2.cpp
141138
PROPERTIES COMPILE_FLAGS "/arch:AVX2")
142139
endif()
143-
else()
144-
remove_src_dir(src/vs2010/port/*)
145140
endif()
146141
147142
options:

src/ccutil/ocrclass.h

+13-23
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,8 @@
2626

2727
#ifndef CCUTIL_OCRCLASS_H_
2828
#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
3729
#include <ctime>
30+
#include <chrono>
3831
#include "host.h"
3932

4033
/*Maximum lengths of various strings*/
@@ -130,7 +123,8 @@ class ETEXT_DESC { // output header
130123
PROGRESS_FUNC progress_callback; /// called whenever progress increases
131124
PROGRESS_FUNC2 progress_callback2;/// monitor-aware progress callback
132125
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
134128
/// by call to set_deadline_msecs().
135129
EANYCODE_CHAR text[1]; /// character data
136130

@@ -144,29 +138,25 @@ class ETEXT_DESC { // output header
144138
progress_callback(nullptr),
145139
progress_callback2(&default_progress_func),
146140
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>();
149143
}
150144

151145
// Sets the end time to be deadline_msecs milliseconds from now.
152146
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);
160150
}
161151
}
162152

163153
// Returns false if we've not passed the end_time, or have not set a deadline.
164154
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);
170160
}
171161

172162
private:

src/vs2010/port/gettimeofday.cpp

-32
This file was deleted.

src/vs2010/port/gettimeofday.h

-31
This file was deleted.

0 commit comments

Comments
 (0)