OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Time represents an absolute point in time, internally represented as | 5 // Time represents an absolute point in time, internally represented as |
6 // microseconds (s/1,000,000) since a platform-dependent epoch. Each | 6 // microseconds (s/1,000,000) since a platform-dependent epoch. Each |
7 // platform's epoch, along with other system-dependent clock interface | 7 // platform's epoch, along with other system-dependent clock interface |
8 // routines, is defined in time_PLATFORM.cc. | 8 // routines, is defined in time_PLATFORM.cc. |
9 // | 9 // |
10 // TimeDelta represents a duration of time, internally represented in | 10 // TimeDelta represents a duration of time, internally represented in |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 double ToDoubleT() const; | 247 double ToDoubleT() const; |
248 | 248 |
249 #if defined(OS_POSIX) | 249 #if defined(OS_POSIX) |
250 struct timeval ToTimeVal() const; | 250 struct timeval ToTimeVal() const; |
251 #endif | 251 #endif |
252 | 252 |
253 #if defined(OS_WIN) | 253 #if defined(OS_WIN) |
254 static Time FromFileTime(FILETIME ft); | 254 static Time FromFileTime(FILETIME ft); |
255 FILETIME ToFileTime() const; | 255 FILETIME ToFileTime() const; |
256 | 256 |
257 // Enable or disable Windows high resolution timer. For more details | 257 // The minimum time of a low resolution timer. This is basically a windows |
258 // see comments in time_win.cc. Returns true on success. | 258 // constant of ~15.6ms. While it does vary on some older OS versions, we'll |
259 static bool UseHighResolutionTimer(bool use); | 259 // treat it as static across all windows versions. |
| 260 static const int kMinLowResolutionThresholdMs = 16; |
| 261 |
| 262 // Enable or disable Windows high resolution timer. If the high resolution |
| 263 // timer is not enabled, calls to ActivateHighResolutionTimer will fail. |
| 264 // When disabling the high resolution timer, this function will not cause |
| 265 // the high resolution timer to be deactivated, but will prevent future |
| 266 // activations. |
| 267 // Must be called from the main thread. |
| 268 // For more details see comments in time_win.cc. |
| 269 static void EnableHighResolutionTimer(bool enable); |
| 270 |
| 271 // Activates or deactivates the high resolution timer based on the |activate| |
| 272 // flag. If the HighResolutionTimer is not Enabled (see |
| 273 // EnableHighResolutionTimer), this function will return false. Otherwise |
| 274 // returns true. |
| 275 // All callers to activate the high resolution timer must eventually call |
| 276 // this function to deactivate the high resolution timer. |
| 277 static bool ActivateHighResolutionTimer(bool activate); |
260 #endif | 278 #endif |
261 | 279 |
262 // Converts an exploded structure representing either the local time or UTC | 280 // Converts an exploded structure representing either the local time or UTC |
263 // into a Time class. | 281 // into a Time class. |
264 static Time FromUTCExploded(const Exploded& exploded) { | 282 static Time FromUTCExploded(const Exploded& exploded) { |
265 return FromExploded(false, exploded); | 283 return FromExploded(false, exploded); |
266 } | 284 } |
267 static Time FromLocalExploded(const Exploded& exploded) { | 285 static Time FromLocalExploded(const Exploded& exploded) { |
268 return FromExploded(true, exploded); | 286 return FromExploded(true, exploded); |
269 } | 287 } |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 // |is_local = true| or UTC |is_local = false|. | 381 // |is_local = true| or UTC |is_local = false|. |
364 static Time FromExploded(bool is_local, const Exploded& exploded); | 382 static Time FromExploded(bool is_local, const Exploded& exploded); |
365 | 383 |
366 explicit Time(int64 us) : us_(us) { | 384 explicit Time(int64 us) : us_(us) { |
367 } | 385 } |
368 | 386 |
369 // The representation of Jan 1, 1970 UTC in microseconds since the | 387 // The representation of Jan 1, 1970 UTC in microseconds since the |
370 // platform-dependent epoch. | 388 // platform-dependent epoch. |
371 static const int64 kTimeTToMicrosecondsOffset; | 389 static const int64 kTimeTToMicrosecondsOffset; |
372 | 390 |
| 391 #if defined(OS_WIN) |
| 392 // Indicates whether fast timers are usable right now. For instance, |
| 393 // when using battery power, we might elect to prevent high speed timers |
| 394 // which would draw more power. |
| 395 static bool high_resolution_timer_enabled_; |
| 396 #endif |
| 397 |
373 // Time in microseconds in UTC. | 398 // Time in microseconds in UTC. |
374 int64 us_; | 399 int64 us_; |
375 }; | 400 }; |
376 | 401 |
377 inline Time TimeDelta::operator+(Time t) const { | 402 inline Time TimeDelta::operator+(Time t) const { |
378 return Time(t.us_ + delta_); | 403 return Time(t.us_ + delta_); |
379 } | 404 } |
380 | 405 |
381 // Inline the TimeDelta factory methods, for fast TimeDelta construction. | 406 // Inline the TimeDelta factory methods, for fast TimeDelta construction. |
382 | 407 |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 #endif | 529 #endif |
505 }; | 530 }; |
506 | 531 |
507 inline TimeTicks TimeDelta::operator+(TimeTicks t) const { | 532 inline TimeTicks TimeDelta::operator+(TimeTicks t) const { |
508 return TimeTicks(t.ticks_ + delta_); | 533 return TimeTicks(t.ticks_ + delta_); |
509 } | 534 } |
510 | 535 |
511 } // namespace base | 536 } // namespace base |
512 | 537 |
513 #endif // BASE_TIME_H_ | 538 #endif // BASE_TIME_H_ |
OLD | NEW |