MCPcopy Create free account
hub / github.com/DFHack/dfhack / registerTick

Method registerTick

library/Core.cpp:185–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183}
184
185uint32_t PerfCounters::registerTick(uint32_t baseline_ms) {
186 if (!World::isFortressMode() || World::ReadPauseState()) {
187 last_tick_baseline_ms = 0;
188 return 0;
189 }
190
191 // only update when the tick counter has advanced
192 if (!world || last_frame_counter == world->frame_counter)
193 return 0;
194 last_frame_counter = world->frame_counter;
195
196 if (last_tick_baseline_ms == 0) {
197 last_tick_baseline_ms = baseline_ms;
198 return 0;
199 }
200
201 uint32_t elapsed_ms = baseline_ms - last_tick_baseline_ms;
202 last_tick_baseline_ms = baseline_ms;
203
204 recent_ticks.head_idx = (recent_ticks.head_idx + 1) % RECENT_TICKS_HISTORY_SIZE;
205
206 if (recent_ticks.full)
207 recent_ticks.sum_ms -= recent_ticks.history[recent_ticks.head_idx];
208 else if (recent_ticks.head_idx == 0)
209 recent_ticks.full = true;
210
211 recent_ticks.history[recent_ticks.head_idx] = elapsed_ms;
212 recent_ticks.sum_ms += elapsed_ms;
213
214 return elapsed_ms;
215}
216
217uint32_t PerfCounters::getUnpausedFps() {
218 uint32_t seconds = recent_ticks.sum_ms / 1000;

Callers 1

UpdateMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected