* cygheap.h (init_cygheap::_gtod): New hires_ms element.
* hires.h (hires_ms::minperiod): Remove static designation. (hires::began_period): New field. * signal.cc: Include headers required for cygheap.h now that gtod lives in the cygheap. * timer.c: Ditto. * times.cc (gtod): Delete variable. (gtod::minperiod): Ditto. (gtod::began_period): Define. (hires_ms::prime): Add more debugging output. Call timeBeginPeriod only when !began_period.
This commit is contained in:
parent
f359a29fc8
commit
72319550c1
|
@ -1,3 +1,17 @@
|
|||
2005-11-04 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* cygheap.h (init_cygheap::_gtod): New hires_ms element.
|
||||
* hires.h (hires_ms::minperiod): Remove static designation.
|
||||
(hires::began_period): New field.
|
||||
* signal.cc: Include headers required for cygheap.h now that gtod lives
|
||||
in the cygheap.
|
||||
* timer.c: Ditto.
|
||||
* times.cc (gtod): Delete variable.
|
||||
(gtod::minperiod): Ditto.
|
||||
(gtod::began_period): Define.
|
||||
(hires_ms::prime): Add more debugging output. Call timeBeginPeriod
|
||||
only when !began_period.
|
||||
|
||||
2005-11-04 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* times.cc (hires_ms::prime): More debugging.
|
||||
|
|
|
@ -8,6 +8,8 @@ This software is a copyrighted work licensed under the terms of the
|
|||
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
||||
details. */
|
||||
|
||||
#include "hires.h"
|
||||
|
||||
#undef cfree
|
||||
|
||||
enum cygheap_types
|
||||
|
@ -298,6 +300,7 @@ struct init_cygheap
|
|||
pid_t pid; /* my pid */
|
||||
HANDLE pid_handle; /* handle for my pid */
|
||||
hook_chain hooks;
|
||||
hires_ms _gtod;
|
||||
void close_ctty ();
|
||||
};
|
||||
|
||||
|
|
|
@ -41,7 +41,8 @@ class hires_ms : hires_base
|
|||
{
|
||||
DWORD initime_ms;
|
||||
LARGE_INTEGER initime_us;
|
||||
static UINT minperiod;
|
||||
UINT minperiod;
|
||||
static bool began_period;
|
||||
UINT prime ();
|
||||
public:
|
||||
LONGLONG usecs (bool justdelta);
|
||||
|
@ -50,5 +51,5 @@ class hires_ms : hires_base
|
|||
|
||||
};
|
||||
|
||||
extern hires_ms gtod;
|
||||
#define gtod cygheap->_gtod
|
||||
#endif /*__HIRES_H__*/
|
||||
|
|
|
@ -21,6 +21,10 @@ details. */
|
|||
#include "hires.h"
|
||||
#include "security.h"
|
||||
#include "cygtls.h"
|
||||
#include "path.h"
|
||||
#include "fhandler.h"
|
||||
#include "dtable.h"
|
||||
#include "cygheap.h"
|
||||
|
||||
int sigcatchers; /* FIXME: Not thread safe. */
|
||||
|
||||
|
|
|
@ -18,6 +18,10 @@ details. */
|
|||
#include "cygtls.h"
|
||||
#include "sigproc.h"
|
||||
#include "sync.h"
|
||||
#include "path.h"
|
||||
#include "fhandler.h"
|
||||
#include "dtable.h"
|
||||
#include "cygheap.h"
|
||||
|
||||
#define TT_MAGIC 0x513e4a1c
|
||||
struct timer_tracker
|
||||
|
|
|
@ -144,8 +144,7 @@ totimeval (struct timeval *dst, FILETIME *src, int sub, int flag)
|
|||
dst->tv_sec = x / (long long) (1e6);
|
||||
}
|
||||
|
||||
hires_ms gtod;
|
||||
UINT NO_COPY hires_ms::minperiod; /* minperiod needs to be NO_COPY since it
|
||||
bool NO_COPY hires_ms::began_period; /* minperiod needs to be NO_COPY since it
|
||||
is a trigger for setting timeBeginPeriod
|
||||
which needs to be set once for every
|
||||
program. */
|
||||
|
@ -633,18 +632,25 @@ hires_ms::prime ()
|
|||
TIMECAPS tc;
|
||||
FILETIME f;
|
||||
|
||||
stupid_printf ("entering, minperiod %d", minperiod);
|
||||
stupid_printf ("entering, minperiod %d, began_period %d", minperiod, began_period);
|
||||
if (minperiod)
|
||||
/* done previously */;
|
||||
else if (timeGetDevCaps (&tc, sizeof (tc)) != TIMERR_NOERROR)
|
||||
{stupid_printf ("timeGetDevCaps failed, %E");
|
||||
minperiod = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
minperiod = min (max (tc.wPeriodMin, 1), tc.wPeriodMax);
|
||||
stupid_printf ("timeGetDevCaps succeeded. tc.wPeriodMin %u, tc.wPeriodMax %u, minperiod %u", tc.wPeriodMin, tc.wPeriodMax, minperiod); }
|
||||
stupid_printf ("inited %d, minperiod %u, began_period %d", minperiod, began_period);
|
||||
|
||||
if (!began_period)
|
||||
{
|
||||
minperiod = min (max (tc.wPeriodMin, 1), tc.wPeriodMax);
|
||||
stupid_printf ("timeGetDevCaps succeeded. tc.wPeriodMin %u, tc.wPeriodMax %u, minperiod %u", tc.wPeriodMin, tc.wPeriodMax, minperiod);
|
||||
timeBeginPeriod (minperiod);
|
||||
began_period = true;
|
||||
stupid_printf ("timeBeginPeriod called");
|
||||
}
|
||||
stupid_printf ("inited %d");
|
||||
|
||||
if (!inited)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue