| 4373 | } |
| 4374 | |
| 4375 | static int internal_getPerfCounters(lua_State *L) { |
| 4376 | auto & core = Core::getInstance(); |
| 4377 | auto & counters = core.perf_counters; |
| 4378 | |
| 4379 | uint32_t elapsed_ms = counters.elapsed_ms; |
| 4380 | if (counters.getIgnorePauseState() || !World::ReadPauseState()) |
| 4381 | elapsed_ms += core.p->getTickCount() - counters.baseline_elapsed_ms; |
| 4382 | |
| 4383 | std::map<const char *, uint32_t> summary; |
| 4384 | summary["unpaused_only"] = counters.getIgnorePauseState() ? 0 : 1; |
| 4385 | summary["elapsed_ms"] = elapsed_ms; |
| 4386 | summary["total_update_ms"] = counters.total_update_ms; |
| 4387 | summary["update_event_manager_ms"] = counters.update_event_manager_ms; |
| 4388 | summary["update_plugin_ms"] = counters.update_plugin_ms; |
| 4389 | summary["update_lua_ms"] = counters.update_lua_ms; |
| 4390 | summary["total_keybinding_ms"] = counters.total_keybinding_ms; |
| 4391 | summary["total_overlay_ms"] = counters.total_overlay_ms; |
| 4392 | summary["total_zscreen_ms"] = std::accumulate( |
| 4393 | std::begin(counters.zscreen_per_focus), std::end(counters.zscreen_per_focus), 0, |
| 4394 | [](const uint32_t prev, const std::pair<const string, uint32_t>& p){ return prev + p.second; }); |
| 4395 | Lua::Push(L, summary); |
| 4396 | Lua::Push(L, translate_event_types(counters.event_manager_event_total_ms)); |
| 4397 | Lua::Push(L, mapify(translate_event_types(counters.event_manager_event_per_plugin_ms))); |
| 4398 | Lua::Push(L, counters.update_per_plugin); |
| 4399 | Lua::Push(L, counters.state_change_per_plugin); |
| 4400 | Lua::Push(L, counters.update_lua_per_repeat); |
| 4401 | Lua::Push(L, counters.overlay_per_widget); |
| 4402 | Lua::Push(L, counters.zscreen_per_focus); |
| 4403 | return 8; |
| 4404 | } |
| 4405 | |
| 4406 | static int internal_getClipboardTextCp437Multiline(lua_State *L) { |
| 4407 | vector<string> lines; |
nothing calls this directly
no test coverage detected