]> Devoid-pointer.net GitWeb - FFBChecker.git/commitdiff
Do not start effect when is can be just updated
authorMichal Malý <madcatxster@prifuk.cz>
Sun, 15 Dec 2013 14:54:04 +0000 (15:54 +0100)
committerMichal Malý <madcatxster@prifuk.cz>
Sun, 15 Dec 2013 14:54:04 +0000 (15:54 +0100)
ffbdevice.cpp

index 4116653a605c578580d79706dc33e2e2194a8a95..9f6833739fcbe84e140040e81fd8ff27c88b014c 100644 (file)
@@ -223,6 +223,7 @@ bool FFBDevice::removeEffect(const int idx)
 
 bool FFBDevice::startEffect(const int idx, FFBEffectTypes type, std::shared_ptr<FFBEffectParameters> params)
 {
+  bool update = false;
   std::shared_ptr<FFBEffect> effect = FFBEffectFactory::createEffect(type);
   if (effect == nullptr) {
     qDebug() << "Unable to create effect";
@@ -247,6 +248,7 @@ bool FFBDevice::startEffect(const int idx, FFBEffectTypes type, std::shared_ptr<
       qDebug() << "Recreating effect" << idx;
     } else {
       effect->setInternalIdx(m_effects[idx]->internalIdx());
+      update = true;
       qDebug() << "Updating effect" << idx;
     }
   }
@@ -267,6 +269,8 @@ bool FFBDevice::startEffect(const int idx, FFBEffectTypes type, std::shared_ptr<
     delete kernelEff;
     return false;
   }
+  if (update)
+    return true;
 
   m_effects[idx]->setInternalIdx(kernelEff->id);
   m_effects[idx]->setStatus(FFBEffect::FFBEffectStatus::STOPPED);