[Orxonox-commit 2038] r6755 - code/trunk/src/modules/pickup/items

dafrick at orxonox.net dafrick at orxonox.net
Mon Apr 19 16:12:23 CEST 2010


Author: dafrick
Date: 2010-04-19 16:12:23 +0200 (Mon, 19 Apr 2010)
New Revision: 6755

Modified:
   code/trunk/src/modules/pickup/items/InvisiblePickup.cc
   code/trunk/src/modules/pickup/items/SpeedPickup.cc
Log:
Fixed Segfault upon dropping of InvisiblePickup, while it was being used.


Modified: code/trunk/src/modules/pickup/items/InvisiblePickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/InvisiblePickup.cc	2010-04-19 12:34:05 UTC (rev 6754)
+++ code/trunk/src/modules/pickup/items/InvisiblePickup.cc	2010-04-19 14:12:23 UTC (rev 6755)
@@ -112,13 +112,28 @@
         
         if (this->isUsed())
         {
-            this->startPickupTimer(this->getDuration());
+            if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() > 0.0f)
+            {
+                this->getTimer()->unpauseTimer();
+            }
+            else
+            {
+                this->startPickupTimer(this->getDuration());
+            }
             this->setInvisible(true);
         }
         else
         {
             this->setInvisible(false);
-            this->destroy();
+        
+            if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() == this->getDuration())
+            {
+                this->destroy();
+            }
+            else
+            {
+                this->getTimer()->pauseTimer();
+            }
         }
         
     }

Modified: code/trunk/src/modules/pickup/items/SpeedPickup.cc
===================================================================
--- code/trunk/src/modules/pickup/items/SpeedPickup.cc	2010-04-19 12:34:05 UTC (rev 6754)
+++ code/trunk/src/modules/pickup/items/SpeedPickup.cc	2010-04-19 14:12:23 UTC (rev 6755)
@@ -160,7 +160,6 @@
             {
                 if(!this->getTimer()->isActive() && this->getTimer()->getRemainingTime() == this->getDuration())
                 {
-                    //TODO: Potentially dangerous, not only for this pickup. Think long and hard about this!!!
                     this->destroy();
                 }
                 else




More information about the Orxonox-commit mailing list