[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdeextragear-2/kst/kst
From:       George Staikos <staikos () kde ! org>
Date:       2005-03-16 1:19:23
Message-ID: 20050316011923.7778212E73 () office ! kde ! org
[Download RAW message or body]

CVS commit by staikos: 

first big benefit of new update scheme: plugins only update when their
dependencies update now.


  M +20 -7     kstplugin.cpp   1.87


--- kdeextragear-2/kst/kst/kstplugin.cpp  #1.86:1.87
@@ -236,7 +236,7 @@ KstObject::UpdateType KstPlugin::update(
   }
 
-  if (update_counter != -1) {
-    //bool force = false;
-    // FIXME: we should only update if one of our dependencies was updated
+  bool force = false;
+  if (update_counter <= 0) {
+    force = true;
   }
 
@@ -262,4 +262,5 @@ KstObject::UpdateType KstPlugin::update(
   QDict<bool> doNew(17);
   bool ignore = true; // work around Qt 3.1 issue
+  bool doUpdate = force;
 
   // Populate the input scalars and vectors
@@ -276,10 +277,17 @@ KstObject::UpdateType KstPlugin::update(
         doNew.insert((*it)._name, &ignore);
       }
-      _inVectors[vitcnt] = _inputVectors[(*it)._name]->value();
-      _inArrayLens[vitcnt++] = _inputVectors[(*it)._name]->length();
+      KstVectorPtr iv = _inputVectors[(*it)._name];
+      doUpdate = (UPDATE == iv->update(update_counter)) || doUpdate;
+      _inVectors[vitcnt] = iv->value();
+      _inArrayLens[vitcnt++] = iv->length();
     } else if ((*it)._type == Plugin::Data::IOValue::FloatType) {
-      _inScalars[itcnt++] = _inputScalars[(*it)._name]->value();
+      KstScalarPtr is = _inputScalars[(*it)._name];
+      doUpdate = (UPDATE == is->update(update_counter)) || doUpdate;
+      _inScalars[itcnt++] = is->value();
     } else if ((*it)._type == Plugin::Data::IOValue::StringType) {
-      _inStrings[sitcnt++] = strdup(_inputStrings[(*it)._name]->value().latin1());
+      KstStringPtr is = _inputStrings[(*it)._name];
+      doUpdate = (UPDATE == is->update(update_counter)) || doUpdate;
+      // Maybe we should use UTF-8 instead?
+      _inStrings[sitcnt++] = strdup(is->value().latin1());
     } else if ((*it)._type == Plugin::Data::IOValue::PidType) {
       _inScalars[itcnt++] = getpid();
@@ -287,4 +295,9 @@ KstObject::UpdateType KstPlugin::update(
   }
 
+  if (!doUpdate) {
+    CLEANUP();
+    return setLastUpdateResult(NO_CHANGE);
+  }
+
   vitcnt = 0;
   // Populate the output vectors


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic