Changeset 12016 for code/branches/PresentationFS18/src/libraries/tools
- Timestamp:
- May 30, 2018, 2:37:02 PM (7 years ago)
- Location:
- code/branches/PresentationFS18
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/PresentationFS18
- Property svn:mergeinfo changed
-
code/branches/PresentationFS18/src/libraries/tools/Timer.cc
r12015 r12016 158 158 } 159 159 160 Timer::Timer(float interval, bool bLoop, std::function<void ()> func, bool bKillAfterCall) 161 { 162 this->init(); 163 RegisterObject(Timer); 164 165 this->setTimer(interval, bLoop, func, bKillAfterCall); 166 } 167 160 168 /** 161 169 @brief Initializes the Timer … … 193 201 this->executor_ = executor; 194 202 this->bActive_ = true; 203 this->isStdFunction_ = false; 195 204 196 205 this->time_ = this->interval_; 197 206 this->bKillAfterCall_ = bKillAfterCall; 198 207 199 executor->getFunctor()->setSafeMode(true); 200 } 201 208 if(executor != nullptr) 209 executor->getFunctor()->setSafeMode(true); 210 } 211 212 void Timer::setTimer(float interval, bool bLoop, std::function<void ()> func, bool bKillAfterCall) 213 { 214 // Without the cast, the call would be ambiguous, because nullptr is castable to 215 // both, ExecutorPtr and std::function. 216 this->setTimer(interval, bLoop, static_cast<ExecutorPtr>(nullptr), bKillAfterCall); 217 this->function_ = func; 218 this->isStdFunction_ = true; 219 } 202 220 203 221 /** … … 208 226 bool temp = this->bKillAfterCall_; // to avoid errors with bKillAfterCall_=false and an exutors which destroy the timer 209 227 210 (*this->executor_)(); 228 if(this->isStdFunction_) 229 this->function_(); 230 else 231 (*this->executor_)(); 211 232 212 233 if (temp) -
code/branches/PresentationFS18/src/libraries/tools/Timer.h
r12015 r12016 108 108 109 109 Timer(float interval, bool bLoop, const ExecutorPtr& executor, bool bKillAfterCall = false); 110 Timer(float interval, bool bLoop, std::function<void (void)> func, bool bKillAfterCall = false); 110 111 111 112 void setTimer(float interval, bool bLoop, const ExecutorPtr& executor, bool bKillAfterCall = false); 113 void setTimer(float interval, bool bLoop, std::function<void (void)> func, bool bKillAfterCall = false); 112 114 113 115 void run(); … … 154 156 155 157 ExecutorPtr executor_; //!< The executor of the function that will be called when the time expires 158 std::function<void (void)> function_; 156 159 160 bool isStdFunction_; 157 161 long long interval_; //!< The time-interval in micro seconds 158 162 bool bLoop_; //!< If true, the executor gets called every @a interval seconds
Note: See TracChangeset
for help on using the changeset viewer.