This is the mail archive of the cygwin@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: gettime time travels after suspend



How about the attached quick and dirty fix?

- Phil



2002-04-14  Philip Aston  <philipa@mail.com>

	* times.cc (hires::usecs): Sync counter every ten minutes to
	work around suspend bug.



Index: cygwin/times.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/times.cc,v
retrieving revision 1.30
diff -u -u -p -r1.30 times.cc
--- cygwin/times.cc	28 Mar 2002 05:20:53 -0000	1.30
+++ cygwin/times.cc	14 Apr 2002 15:09:04 -0000
@@ -599,5 +599,14 @@ hires::usecs (bool justdelta)
 
   // FIXME: Use round() here?
   now.QuadPart = (LONGLONG) (freq * (double) (now.QuadPart - primed_pc.QuadPart));
+
+  /* Reinitialise every ten minutes. Cheap hack to correct time after
+     suspend and resume. */
+  if (now.QuadPart > 600000000l)
+    {
+      inited = 0;
+      return usecs(justdelta);
+    }
+
   return justdelta ? now.QuadPart : primed_ft.QuadPart + now.QuadPart;
 }


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]