Merge branch 'master' into jgrpp

# Conflicts:
#	.github/workflows/ci-build.yml
#	.github/workflows/release-linux.yml
#	.github/workflows/release-macos.yml
#	.github/workflows/release-source.yml
#	.github/workflows/release.yml
#	CMakeLists.txt
#	COMPILING.md
#	src/ai/ai_core.cpp
#	src/ai/ai_gui.cpp
#	src/bridge_gui.cpp
#	src/company_gui.cpp
#	src/console_cmds.cpp
#	src/core/CMakeLists.txt
#	src/core/smallmap_type.hpp
#	src/disaster_vehicle.h
#	src/effectvehicle_base.h
#	src/fontcache.cpp
#	src/game/game_core.cpp
#	src/game/game_gui.cpp
#	src/gamelog.cpp
#	src/gamelog_internal.h
#	src/group_gui.cpp
#	src/linkgraph/linkgraph.h
#	src/misc.cpp
#	src/network/core/config.h
#	src/network/core/udp.cpp
#	src/network/network_chat_gui.cpp
#	src/network/network_content_gui.cpp
#	src/network/network_gui.cpp
#	src/newgrf.cpp
#	src/newgrf_gui.cpp
#	src/newgrf_profiling.cpp
#	src/newgrf_profiling.h
#	src/object_gui.cpp
#	src/openttd.cpp
#	src/openttd.h
#	src/order_gui.cpp
#	src/os/windows/font_win32.cpp
#	src/rail_gui.cpp
#	src/road.cpp
#	src/road_gui.cpp
#	src/saveload/afterload.cpp
#	src/saveload/saveload.h
#	src/script/api/script_controller.cpp
#	src/script/api/script_roadtypelist.cpp
#	src/script/script_config.cpp
#	src/script/script_config.hpp
#	src/script/script_instance.cpp
#	src/script/script_scanner.cpp
#	src/script/squirrel.cpp
#	src/script/squirrel_helper.hpp
#	src/settings_gui.cpp
#	src/settings_internal.h
#	src/settings_type.h
#	src/table/settings/network_private_settings.ini
#	src/timetable_gui.cpp
#	src/vehicle.cpp
#	src/vehicle_base.h
#	src/window_gui.h
This commit is contained in:
Jonathan G Rennison
2023-07-01 01:08:35 +01:00
246 changed files with 2023 additions and 1211 deletions

View File

@@ -14,12 +14,13 @@
#include "console_func.h"
#include "spritecache.h"
#include "walltime_func.h"
#include "timer/timer.h"
#include "timer/timer_game_tick.h"
#include <chrono>
std::vector<NewGRFProfiler> _newgrf_profilers;
Date _newgrf_profile_end_date;
/**
@@ -96,6 +97,8 @@ uint32 NewGRFProfiler::Finish()
if (this->calls.empty()) {
IConsolePrintF(CC_DEBUG, "Finished profile of NewGRF [%08X], no events collected, not writing a file", BSWAP32(this->grffile->grfid));
this->Abort();
return 0;
}
@@ -114,7 +117,6 @@ uint32 NewGRFProfiler::Finish()
}
this->Abort();
return total_microseconds;
}
@@ -139,8 +141,10 @@ std::string NewGRFProfiler::GetOutputFilename() const
return std::string(filepath);
}
uint32 NewGRFProfiler::FinishAll()
/* static */ uint32 NewGRFProfiler::FinishAll()
{
NewGRFProfiler::AbortTimer();
uint64 max_ticks = 0;
uint32 total_microseconds = 0;
for (NewGRFProfiler &pr : _newgrf_profilers) {
@@ -154,7 +158,29 @@ uint32 NewGRFProfiler::FinishAll()
IConsolePrintF(CC_DEBUG, "Total NewGRF callback processing: %u microseconds over " OTTD_PRINTF64U " ticks", total_microseconds, max_ticks);
}
_newgrf_profile_end_date = MAX_DAY;
return total_microseconds;
}
/**
* Check whether profiling is active and should be finished.
*/
static TimeoutTimer<TimerGameTick> _profiling_finish_timeout(0, []()
{
NewGRFProfiler::FinishAll();
});
/**
* Start the timeout timer that will finish all profiling sessions.
*/
/* static */ void NewGRFProfiler::StartTimer(uint64 ticks)
{
_profiling_finish_timeout.Reset(ticks);
}
/**
* Abort the timeout timer, so the timer callback is never called.
*/
/* static */ void NewGRFProfiler::AbortTimer()
{
_profiling_finish_timeout.Abort();
}