Commit 8d78f0db884815263214441e5974936a711e405f
1 parent
d1ae1645
Fix FPSSynch, rename FPSLimit
Fix a bug in FPSSynch, also rename it FPSLimit because it only reduces the max frame rate of an algorithm, it doesn't do frame dropping or anything.
Showing
1 changed file
with
13 additions
and
8 deletions
openbr/plugins/gui.cpp
| ... | ... | @@ -220,16 +220,16 @@ signals: |
| 220 | 220 | |
| 221 | 221 | BR_REGISTER(Transform, ShowTransform) |
| 222 | 222 | |
| 223 | -class FPSSynch : public TimeVaryingTransform | |
| 223 | +class FPSLimit : public TimeVaryingTransform | |
| 224 | 224 | { |
| 225 | 225 | Q_OBJECT |
| 226 | 226 | Q_PROPERTY(int targetFPS READ get_targetFPS WRITE set_targetFPS RESET reset_targetFPS STORED false) |
| 227 | 227 | BR_PROPERTY(int, targetFPS, 30) |
| 228 | 228 | |
| 229 | 229 | public: |
| 230 | - FPSSynch() : TimeVaryingTransform(false, false) {} | |
| 230 | + FPSLimit() : TimeVaryingTransform(false, false) {} | |
| 231 | 231 | |
| 232 | - ~FPSSynch() {} | |
| 232 | + ~FPSLimit() {} | |
| 233 | 233 | |
| 234 | 234 | void train(const TemplateList &data) { (void) data; } |
| 235 | 235 | |
| ... | ... | @@ -237,16 +237,19 @@ public: |
| 237 | 237 | void projectUpdate(const TemplateList &src, TemplateList &dst) |
| 238 | 238 | { |
| 239 | 239 | dst = src; |
| 240 | - qint64 time_delta = timer.elapsed(); | |
| 240 | + qint64 current_time = timer.elapsed(); | |
| 241 | + qint64 target_time = last_time + target_wait; | |
| 242 | + qint64 wait_time = target_time - current_time; | |
| 241 | 243 | |
| 242 | - qint64 wait_time = target_wait - time_delta; | |
| 243 | - timer.start(); | |
| 244 | + last_time = current_time; | |
| 244 | 245 | |
| 246 | + qDebug("time is %d wait is %d", current_time, wait_time); | |
| 245 | 247 | if (wait_time < 0) { |
| 246 | 248 | return; |
| 247 | 249 | } |
| 248 | 250 | |
| 249 | 251 | QThread::msleep(wait_time); |
| 252 | + last_time = timer.elapsed(); | |
| 250 | 253 | } |
| 251 | 254 | |
| 252 | 255 | void finalize(TemplateList & output) |
| ... | ... | @@ -256,15 +259,17 @@ public: |
| 256 | 259 | |
| 257 | 260 | void init() |
| 258 | 261 | { |
| 259 | - target_wait = 1000 / targetFPS; | |
| 262 | + target_wait = 1000.0 / targetFPS; | |
| 260 | 263 | timer.start(); |
| 264 | + last_time = timer.elapsed(); | |
| 261 | 265 | } |
| 262 | 266 | |
| 263 | 267 | protected: |
| 264 | 268 | QElapsedTimer timer; |
| 265 | 269 | qint64 target_wait; |
| 270 | + qint64 last_time; | |
| 266 | 271 | }; |
| 267 | -BR_REGISTER(Transform, FPSSynch) | |
| 272 | +BR_REGISTER(Transform, FPSLimit) | |
| 268 | 273 | |
| 269 | 274 | class FPSCalc : public TimeVaryingTransform |
| 270 | 275 | { | ... | ... |