diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-12-03 10:03:39 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-12-03 10:03:39 -0300 |
commit | bf3a94ee51d90e80912934b5f90b299d207b0afb (patch) | |
tree | b293966754558e8cf2ac85dde27ea7cbe8fb4336 /src/nvim/os/time.c | |
parent | 41f1678767071b037e0097e7c46eeecbe6bd6df4 (diff) | |
download | rneovim-bf3a94ee51d90e80912934b5f90b299d207b0afb.tar.gz rneovim-bf3a94ee51d90e80912934b5f90b299d207b0afb.tar.bz2 rneovim-bf3a94ee51d90e80912934b5f90b299d207b0afb.zip |
time: Inline microdelay into os_microdelay
Diffstat (limited to 'src/nvim/os/time.c')
-rw-r--r-- | src/nvim/os/time.c | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/src/nvim/os/time.c b/src/nvim/os/time.c index 3794e813d2..810ddea82b 100644 --- a/src/nvim/os/time.c +++ b/src/nvim/os/time.c @@ -54,7 +54,22 @@ void os_delay(uint64_t milliseconds, bool ignoreinput) /// @param microseconds Number of microseconds to sleep void os_microdelay(uint64_t microseconds) { - microdelay(microseconds); + uint64_t elapsed = 0; + uint64_t ns = microseconds * 1000; // convert to nanoseconds + uint64_t base = uv_hrtime(); + + uv_mutex_lock(&delay_mutex); + + while (elapsed < ns) { + if (uv_cond_timedwait(&delay_cond, &delay_mutex, ns - elapsed) + == UV_ETIMEDOUT) + break; + uint64_t now = uv_hrtime(); + elapsed += now - base; + base = now; + } + + uv_mutex_unlock(&delay_mutex); } /// Portable version of POSIX localtime_r() @@ -88,23 +103,3 @@ struct tm *os_get_localtime(struct tm *result) FUNC_ATTR_NONNULL_ALL time_t rawtime = time(NULL); return os_localtime_r(&rawtime, result); } - -static void microdelay(uint64_t microseconds) -{ - uint64_t elapsed = 0; - uint64_t ns = microseconds * 1000; // convert to nanoseconds - uint64_t base = uv_hrtime(); - - uv_mutex_lock(&delay_mutex); - - while (elapsed < ns) { - if (uv_cond_timedwait(&delay_cond, &delay_mutex, ns - elapsed) - == UV_ETIMEDOUT) - break; - uint64_t now = uv_hrtime(); - elapsed += now - base; - base = now; - } - - uv_mutex_unlock(&delay_mutex); -} |