summaryrefslogtreecommitdiffstats
path: root/base/event_recorder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/event_recorder.cc')
-rw-r--r--base/event_recorder.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/base/event_recorder.cc b/base/event_recorder.cc
index ddc7617..23c092f 100644
--- a/base/event_recorder.cc
+++ b/base/event_recorder.cc
@@ -53,6 +53,9 @@ bool EventRecorder::StartRecording(std::wstring& filename) {
return false;
}
+ // Set the faster clock, if possible.
+ ::timeBeginPeriod(1);
+
// Set the recording hook. JOURNALRECORD can only be used as a global hook.
journal_hook_ = ::SetWindowsHookEx(WH_JOURNALRECORD, StaticRecordWndProc,
GetModuleHandle(NULL), 0);
@@ -76,6 +79,8 @@ void EventRecorder::StopRecording() {
return;
}
+ ::timeEndPeriod(1);
+
DCHECK(file_ != NULL);
fclose(file_);
file_ = NULL;
@@ -104,6 +109,9 @@ bool EventRecorder::StartPlayback(std::wstring& filename) {
return false;
}
+ // Set the faster clock, if possible.
+ ::timeBeginPeriod(1);
+
// Playback time is tricky. When playing back, we read a series of events,
// each with timeouts. Simply subtracting the delta between two timers will
// lead to fast playback (about 2x speed). The API has two events, one
@@ -142,6 +150,8 @@ void EventRecorder::StopPlayback() {
fclose(file_);
file_ = NULL;
+ ::timeEndPeriod(1);
+
journal_hook_ = NULL;
is_playing_ = false;
}