X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fstructure%2Fsubsystem_mgr.hxx;h=60313fd4a3543a8f723f233dc66c660a0ecd2951;hb=c82df0590dd46347e2f1d0dca4cc3712f67f3654;hp=212ce58455330b4d2db7e0e48ea6c3758d08f344;hpb=ddf9e08069406be1beb95ce3ac00ae59731a6d78;p=simgear.git diff --git a/simgear/structure/subsystem_mgr.hxx b/simgear/structure/subsystem_mgr.hxx index 212ce584..60313fd4 100644 --- a/simgear/structure/subsystem_mgr.hxx +++ b/simgear/structure/subsystem_mgr.hxx @@ -29,8 +29,8 @@ #include #include -#include #include +#include #include "SGSmplstat.hxx" @@ -169,6 +169,16 @@ public: virtual void reinit (); + /** + * Shutdown the subsystem. + * + *

Release any state associated with subsystem. Shutdown happens in + * the reverse order to init(), so this is the correct place to do + * shutdown that depends on other subsystems. + *

+ */ + virtual void shutdown (); + /** * Acquire the subsystem's property bindings. * @@ -297,6 +307,7 @@ public: virtual void init (); virtual void postinit (); virtual void reinit (); + virtual void shutdown (); virtual void bind (); virtual void unbind (); virtual void update (double delta_time_sec); @@ -312,6 +323,7 @@ public: virtual bool has_subsystem (const std::string &name) const; void collectDebugTiming(bool collect); + void printTimingStatistics(double minMaxTime=0.0,double minJitter=0.0); /** * @@ -328,8 +340,8 @@ private: virtual ~Member (); virtual void update (double delta_time_sec); - void printTimingInformation(double time); - void printTimingStatistics(); + void printTimingInformation(double time); + void printTimingStatistics(double minMaxTime=0.0,double minJitter=0.0); void updateExecutionTime(double time); double getTimeWarningThreshold(); void collectDebugTiming (bool collect) { collectTimeStats = collect; }; @@ -392,6 +404,7 @@ public: virtual void init (); virtual void postinit (); virtual void reinit (); + virtual void shutdown (); virtual void bind (); virtual void unbind (); virtual void update (double delta_time_sec); @@ -415,10 +428,11 @@ public: virtual SGSubsystem * get_subsystem(const std::string &name) const; void collectDebugTiming(bool collect); + void printTimingStatistics(double minMaxTime=0.0,double minJitter=0.0); private: - SGSubsystemGroup _groups[MAX_GROUPS]; + SGSubsystemGroup* _groups[MAX_GROUPS]; typedef std::map SubsystemDict; SubsystemDict _subsystem_map;