X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fmain.cxx;h=33bb062bbe081950e78252babb3120cfcf214111;hb=38226af24ec01e8f0a20d7fd73ef838a69f6ef25;hp=677d0f36bca67f2871048d0ae0289eddf98f9ee8;hpb=70a525d47c6a8d486e9ba71eeaad883f2dbf5a54;p=flightgear.git diff --git a/src/Main/main.cxx b/src/Main/main.cxx index 677d0f36b..33bb062bb 100644 --- a/src/Main/main.cxx +++ b/src/Main/main.cxx @@ -121,6 +121,15 @@ static void fgMainLoop( void ) { static SGPropertyNode_ptr frame_signal = fgGetNode("/sim/signals/frame", true); + static SGPropertyNode_ptr _statisticsFlag + = fgGetNode("/sim/timing-statistics/enabled", true); + static SGPropertyNode_ptr _statisticsInterval + = fgGetNode("/sim/timing-statistics/interval-s", true); + static SGPropertyNode_ptr _statiticsMinJitter + = fgGetNode("/sim/timing-statistics/min-jitter-ms", true); + static SGPropertyNode_ptr _statiticsMinTime + = fgGetNode("/sim/timing-statistics/min-time-ms", true); + frame_signal->fireValueChanged(); SGCloudLayer::enable_bump_mapping = fgGetBool("/sim/rendering/bump-mapping"); @@ -206,6 +215,28 @@ static void fgMainLoop( void ) { simgear::sleepForMSec(500); } } + + // print timing statistics + static bool _lastStatisticsFlag = false; + if (_lastStatisticsFlag != _statisticsFlag->getBoolValue()) + { + // flag has changed, update subsystem manager + _lastStatisticsFlag = _statisticsFlag->getBoolValue(); + globals->get_subsystem_mgr()->collectDebugTiming(_lastStatisticsFlag); + } + if (_lastStatisticsFlag) + { + static double elapsed = 0; + elapsed += real_dt; + if (elapsed >= _statisticsInterval->getDoubleValue()) + { + // print and reset timing statistics + globals->get_subsystem_mgr()->printTimingStatistics(_statiticsMinTime->getDoubleValue(), + _statiticsMinJitter->getDoubleValue()); + elapsed = 0; + } + } + simgear::AtomicChangeListener::fireChangeListeners(); SG_LOG( SG_ALL, SG_DEBUG, "" );