+ if (host_framecount == cls.td_lastframe)
+ {
+ // already read this frame's message
+ return;
+ }
+ if (cls.td_lastframe == -1)
+ {
+ // we start counting on the second frame
+ // (after parsing connection stuff)
+ cls.td_startframe = host_framecount + 1;
+ }
+ cls.td_lastframe = host_framecount;
+ cls.td_onesecondframes++;
+ // if this is the first official frame we can now grab the real
+ // td_starttime so the bogus time on the first frame doesn't
+ // count against the final report
+ if (host_framecount == cls.td_startframe)
+ {
+ cls.td_starttime = realtime;
+ cls.td_onesecondnexttime = realtime + 1;
+ cls.td_onesecondframes = 0;
+ cls.td_onesecondminframes = 0;
+ cls.td_onesecondmaxframes = 0;
+ cls.td_onesecondavgframes = 0;
+ cls.td_onesecondavgcount = 0;
+ }
+ if (realtime >= cls.td_onesecondnexttime)
+ {
+ if (cls.td_onesecondavgcount == 0)
+ {
+ cls.td_onesecondminframes = cls.td_onesecondframes;
+ cls.td_onesecondmaxframes = cls.td_onesecondframes;
+ }
+ cls.td_onesecondminframes = min(cls.td_onesecondminframes, cls.td_onesecondframes);
+ cls.td_onesecondmaxframes = max(cls.td_onesecondmaxframes, cls.td_onesecondframes);
+ cls.td_onesecondavgframes += cls.td_onesecondframes;
+ cls.td_onesecondavgcount++;
+ cls.td_onesecondframes = 0;
+ cls.td_onesecondnexttime++;
+ }