[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20046] trunk/blender/source/gameengine/ GameLogic/SCA_LogicManager.cpp: BGE: fix a crash with previous scene destruction speed up commit when sensors and controllers are cross connected between objects .

Benoit Bolsee benoit.bolsee at online.be
Sun May 3 23:42:39 CEST 2009


Revision: 20046
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20046
Author:   ben2610
Date:     2009-05-03 23:42:39 +0200 (Sun, 03 May 2009)

Log Message:
-----------
BGE: fix a crash with previous scene destruction speed up commit when sensors and controllers are cross connected between objects.

Modified Paths:
--------------
    trunk/blender/source/gameengine/GameLogic/SCA_LogicManager.cpp

Modified: trunk/blender/source/gameengine/GameLogic/SCA_LogicManager.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_LogicManager.cpp	2009-05-03 20:47:29 UTC (rev 20045)
+++ trunk/blender/source/gameengine/GameLogic/SCA_LogicManager.cpp	2009-05-03 21:42:39 UTC (rev 20046)
@@ -193,10 +193,20 @@
 
 void SCA_LogicManager::RemoveController(SCA_IController* controller)
 {
+	sensormap_t::iterator sit;
+	sit = m_sensorcontrollermapje.begin();
+	if (sit==m_sensorcontrollermapje.end())
+	{
+		//TRICK: either there is no sensor at all, or the scene is being deleted 
+		//(see KX_Scene::~KX_Scene()). In the first case, this is harmless. 
+		//In the second case, we cannot rely on the sensor being still available, 
+		//make the controller inactive to avoid link count. 
+		//Need a better solution, maybe something similar to m_removedActuators.
+		controller->SetActive(false);
+	}
 	controller->UnlinkAllSensors();
 	controller->UnlinkAllActuators();
-	sensormap_t::iterator sit;
-	for (sit = m_sensorcontrollermapje.begin();!(sit==m_sensorcontrollermapje.end());++sit)
+	for (;!(sit==m_sensorcontrollermapje.end());++sit)
 	{
 		(*sit).second.remove(controller);
 	}





More information about the Bf-blender-cvs mailing list