src/chess/rules.c

changeset 40
47162a7621da
parent 36
ebe0c961e9a6
child 47
d726e4b46c33
     1.1 --- a/src/chess/rules.c	Wed Apr 16 20:32:25 2014 +0200
     1.2 +++ b/src/chess/rules.c	Wed Apr 16 21:16:05 2014 +0200
     1.3 @@ -48,17 +48,20 @@
     1.4      elem->next = NULL;
     1.5      elem->move = *move;
     1.6      
     1.7 -    gettimeofday(&(elem->move.timestamp), NULL);
     1.8 +    struct timeval curtimestamp;
     1.9 +    gettimeofday(&curtimestamp, NULL);
    1.10 +    elem->move.timestamp.tv_sec = curtimestamp.tv_sec;
    1.11 +    elem->move.timestamp.tv_usec = curtimestamp.tv_usec;
    1.12      
    1.13      if (gamestate->lastmove) {
    1.14 -        struct timeval *lasttstamp = &(gamestate->lastmove->move.timestamp);
    1.15 -        time_t sec = elem->move.timestamp.tv_sec - lasttstamp->tv_sec;
    1.16 +        struct movetimeval *lasttstamp = &(gamestate->lastmove->move.timestamp);
    1.17 +        uint64_t sec = curtimestamp.tv_sec - lasttstamp->tv_sec;
    1.18          suseconds_t micros;
    1.19 -        if (elem->move.timestamp.tv_usec < lasttstamp->tv_usec) {
    1.20 -            micros = 1e6L-(lasttstamp->tv_usec - elem->move.timestamp.tv_usec);
    1.21 +        if (curtimestamp.tv_usec < lasttstamp->tv_usec) {
    1.22 +            micros = 1e6L-(lasttstamp->tv_usec - curtimestamp.tv_usec);
    1.23              sec--;
    1.24          } else {
    1.25 -            micros = elem->move.timestamp.tv_usec - lasttstamp->tv_usec;
    1.26 +            micros = curtimestamp.tv_usec - lasttstamp->tv_usec;
    1.27          }
    1.28          
    1.29          elem->move.movetime.tv_sec = sec;
    1.30 @@ -559,7 +562,7 @@
    1.31          while (movelist) {
    1.32              time += gameinfo->addtime;
    1.33              
    1.34 -            struct timeval *movetime = &(movelist->move.movetime);
    1.35 +            struct movetimeval *movetime = &(movelist->move.movetime);
    1.36              if (movetime->tv_sec >= time) {
    1.37                  return 0;
    1.38              }
    1.39 @@ -573,7 +576,7 @@
    1.40          time_t sec;
    1.41          movelist = gamestate->lastmove;
    1.42          if ((movelist->move.piece & COLOR_MASK) != color) {
    1.43 -            struct timeval *lastmovetstamp = &(movelist->move.timestamp);
    1.44 +            struct movetimeval *lastmovetstamp = &(movelist->move.timestamp);
    1.45              struct timeval currenttstamp;
    1.46              gettimeofday(&currenttstamp, NULL);
    1.47              micros += currenttstamp.tv_usec - lastmovetstamp->tv_usec;

mercurial