Change timer calculation based on feedback from PSI. Remove some duplicate code.
r1842 | dcl | 2007-04-10 09:53:22 +1000 (Tue, 10 Apr 2007) | 2 lines
This commit is contained in:
29
nwatch.c
29
nwatch.c
@@ -157,10 +157,11 @@ int NetWatchRegisterTimer(pNWTimer* handle, int mSec,
|
|||||||
return 0;
|
return 0;
|
||||||
memset(pNew, 0, sizeof(NWTimer));
|
memset(pNew, 0, sizeof(NWTimer));
|
||||||
gettimeofday(&pNew->tv, NULL);
|
gettimeofday(&pNew->tv, NULL);
|
||||||
pNew->tv.tv_usec += 1000 * mSec;
|
pNew->tv.tv_sec += mSec / 1000;
|
||||||
|
pNew->tv.tv_usec += 1000 * (mSec % 1000);
|
||||||
if (pNew->tv.tv_usec > 1000000) {
|
if (pNew->tv.tv_usec > 1000000) {
|
||||||
pNew->tv.tv_sec += pNew->tv.tv_usec / 1000000;
|
pNew->tv.tv_sec ++;
|
||||||
pNew->tv.tv_usec %= 1000000;
|
pNew->tv.tv_usec -= 1000000;
|
||||||
}
|
}
|
||||||
pNew->tick = 0;
|
pNew->tick = 0;
|
||||||
pNew->func = callback;
|
pNew->func = callback;
|
||||||
@@ -174,29 +175,15 @@ int NetWatchRegisterTimer(pNWTimer* handle, int mSec,
|
|||||||
int NetWatchRegisterTimerPeriodic(pNWTimer* handle, int mSecInitial, int mSecPeriod,
|
int NetWatchRegisterTimerPeriodic(pNWTimer* handle, int mSecInitial, int mSecPeriod,
|
||||||
pNWCallback callback, void* context)
|
pNWCallback callback, void* context)
|
||||||
{
|
{
|
||||||
pNetWatch self = instance;
|
if (NetWatchRegisterTimer(handle, mSecInitial, callback, context)) {
|
||||||
if(!self || self->lMagic != NWMAGIC)
|
pNWTimer pNew = *handle;
|
||||||
return 0;
|
|
||||||
pNWTimer pNew = (pNWTimer) malloc(sizeof(NWTimer));
|
|
||||||
if (pNew == NULL)
|
if (pNew == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
memset(pNew, 0, sizeof(NWTimer));
|
|
||||||
gettimeofday(&pNew->tv, NULL);
|
|
||||||
pNew->tv.tv_usec += 1000 * mSecInitial;
|
|
||||||
if (pNew->tv.tv_usec > 1000000) {
|
|
||||||
pNew->tv.tv_sec += pNew->tv.tv_usec / 1000000;
|
|
||||||
pNew->tv.tv_usec %= 1000000;
|
|
||||||
}
|
|
||||||
if (mSecPeriod > 0)
|
if (mSecPeriod > 0)
|
||||||
pNew->tick = mSecPeriod;
|
pNew->tick = mSecPeriod;
|
||||||
else
|
|
||||||
pNew->tick = 0;
|
|
||||||
pNew->func = callback;
|
|
||||||
pNew->cntx = context;
|
|
||||||
pNew->vrfy = NWMAGIC;
|
|
||||||
NetWatchTimerInsQue(self, pNew);
|
|
||||||
*handle = pNew;
|
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int NetWatchGetTimerPeriod(pNWTimer handle)
|
int NetWatchGetTimerPeriod(pNWTimer handle)
|
||||||
|
|||||||
Reference in New Issue
Block a user