From: Tor Lillqvist Date: Tue, 29 Mar 2005 08:24:48 +0000 (+0000) Subject: [Win32] Use GetSystemTimeAsFileTime() instead of time() and X-Git-Tag: GLIB_2_7_0~102 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8ced6d247870d30d02cdd9e697904f54ec7eb303;p=platform%2Fupstream%2Fglib.git [Win32] Use GetSystemTimeAsFileTime() instead of time() and 2005-03-29 Tor Lillqvist * glib/gmain.c (g_get_current_time): [Win32] Use GetSystemTimeAsFileTime() instead of time() and GetTickCount(). Much simpler. --- diff --git a/ChangeLog b/ChangeLog index 13be51d..12dc208 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,13 @@ 2005-03-29 Tor Lillqvist - * glib/gmain.c (g_poll): If the event fired, assign + * glib/gmain.c (g_poll): [Win32] If the event fired, assign f->revents=f->events. We can't know whether the upper layer using the event actually is readable, writeable or what, so say that all the conditions hold. Remove the ResetEvent() call that has been ifdeffed out anyway for a long time. Remove an "#ifdef 1" and #endif pair of lines, that code is not optional. + (g_get_current_time): [Win32] Use GetSystemTimeAsFileTime() + instead of time() and GetTickCount(). Much simpler. 2005-03-28 Matthias Clasen diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 13be51d..12dc208 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,11 +1,13 @@ 2005-03-29 Tor Lillqvist - * glib/gmain.c (g_poll): If the event fired, assign + * glib/gmain.c (g_poll): [Win32] If the event fired, assign f->revents=f->events. We can't know whether the upper layer using the event actually is readable, writeable or what, so say that all the conditions hold. Remove the ResetEvent() call that has been ifdeffed out anyway for a long time. Remove an "#ifdef 1" and #endif pair of lines, that code is not optional. + (g_get_current_time): [Win32] Use GetSystemTimeAsFileTime() + instead of time() and GetTickCount(). Much simpler. 2005-03-28 Matthias Clasen diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 13be51d..12dc208 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,11 +1,13 @@ 2005-03-29 Tor Lillqvist - * glib/gmain.c (g_poll): If the event fired, assign + * glib/gmain.c (g_poll): [Win32] If the event fired, assign f->revents=f->events. We can't know whether the upper layer using the event actually is readable, writeable or what, so say that all the conditions hold. Remove the ResetEvent() call that has been ifdeffed out anyway for a long time. Remove an "#ifdef 1" and #endif pair of lines, that code is not optional. + (g_get_current_time): [Win32] Use GetSystemTimeAsFileTime() + instead of time() and GetTickCount(). Much simpler. 2005-03-28 Matthias Clasen diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 13be51d..12dc208 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,11 +1,13 @@ 2005-03-29 Tor Lillqvist - * glib/gmain.c (g_poll): If the event fired, assign + * glib/gmain.c (g_poll): [Win32] If the event fired, assign f->revents=f->events. We can't know whether the upper layer using the event actually is readable, writeable or what, so say that all the conditions hold. Remove the ResetEvent() call that has been ifdeffed out anyway for a long time. Remove an "#ifdef 1" and #endif pair of lines, that code is not optional. + (g_get_current_time): [Win32] Use GetSystemTimeAsFileTime() + instead of time() and GetTickCount(). Much simpler. 2005-03-28 Matthias Clasen diff --git a/glib/gmain.c b/glib/gmain.c index 73d7f7c..4cc320b 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -1689,26 +1689,19 @@ g_get_current_time (GTimeVal *result) result->tv_sec = r.tv_sec; result->tv_usec = r.tv_usec; #else - /* Avoid calling time() except for the first time. - * GetTickCount() should be pretty fast and low-level? - * I could also use ftime() but it seems unnecessarily overheady. - */ - static DWORD start_tick = 0; - static time_t start_time; - DWORD tick; + FILETIME ft; + guint64 *time64 = (guint64 *) &ft; - g_return_if_fail (result != NULL); - - if (start_tick == 0) - { - start_tick = GetTickCount (); - time (&start_time); - } + GetSystemTimeAsFileTime (&ft); - tick = GetTickCount (); + /* Convert from 100s of nanoseconds since 1601-01-01 + * to Unix epoch. Yes, this is Y2038 unsafe. + */ + *time64 -= G_GINT64_CONSTANT (116444736000000000); + *time64 /= 10; - result->tv_sec = (tick - start_tick) / 1000 + start_time; - result->tv_usec = ((tick - start_tick) % 1000) * 1000; + result->tv_sec = *time64 / 1000000; + result->tv_usec = *time64 % 1000000; #endif }