[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47371] trunk/blender/intern/itasc/kdl: Fix Eigen3 unaligned array in iTaSC.
Benoit Bolsee
benoit.bolsee at online.be
Sun Jun 3 14:00:51 CEST 2012
Revision: 47371
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47371
Author: ben2610
Date: 2012-06-03 12:00:41 +0000 (Sun, 03 Jun 2012)
Log Message:
-----------
Fix Eigen3 unaligned array in iTaSC. The unaligned array cause crash when SSE2 is enabled. The source of unaligned array were: matrix passing by value in std::make_pair() and offset of matrix member in structure.
Modified Paths:
--------------
trunk/blender/intern/itasc/kdl/segment.hpp
trunk/blender/intern/itasc/kdl/tree.cpp
trunk/blender/intern/itasc/kdl/tree.hpp
Modified: trunk/blender/intern/itasc/kdl/segment.hpp
===================================================================
--- trunk/blender/intern/itasc/kdl/segment.hpp 2012-06-03 11:16:13 UTC (rev 47370)
+++ trunk/blender/intern/itasc/kdl/segment.hpp 2012-06-03 12:00:41 UTC (rev 47371)
@@ -46,8 +46,8 @@
class Segment {
friend class Chain;
private:
+ Inertia M;
Joint joint;
- Inertia M;
Frame f_tip;
public:
Modified: trunk/blender/intern/itasc/kdl/tree.cpp
===================================================================
--- trunk/blender/intern/itasc/kdl/tree.cpp 2012-06-03 11:16:13 UTC (rev 47370)
+++ trunk/blender/intern/itasc/kdl/tree.cpp 2012-06-03 12:00:41 UTC (rev 47371)
@@ -29,15 +29,18 @@
Tree::Tree() :
nrOfJoints(0), nrOfSegments(0) {
- segments.insert(make_pair("root", TreeElement::Root()));
+ TreeElement root;
+ std::pair<std::string, TreeElement> val("root", root);
+ segments.insert(val);
}
Tree::Tree(const Tree& in) {
segments.clear();
nrOfSegments = 0;
nrOfJoints = 0;
-
- segments.insert(make_pair("root", TreeElement::Root()));
+ TreeElement root;
+ std::pair<std::string, TreeElement> val("root", root);
+ segments.insert(val);
this->addTree(in, "", "root");
}
@@ -46,8 +49,9 @@
segments.clear();
nrOfSegments = 0;
nrOfJoints = 0;
-
- segments.insert(make_pair("root", TreeElement::Root()));
+ TreeElement root;
+ std::pair<std::string, TreeElement> val("root", root);
+ segments.insert(val);
this->addTree(in, "", "root");
return *this;
}
@@ -60,8 +64,10 @@
return false;
pair<SegmentMap::iterator, bool> retval;
//insert new element
- retval = segments.insert(make_pair(segment_name, TreeElement(segment,
- parent, nrOfJoints)));
+ TreeElement elem(segment, parent, nrOfJoints);
+ std::pair<std::string, TreeElement> val(segment_name, elem);
+
+ retval = segments.insert(val);
//check if insertion succeeded
if (!retval.second)
return false;
Modified: trunk/blender/intern/itasc/kdl/tree.hpp
===================================================================
--- trunk/blender/intern/itasc/kdl/tree.hpp 2012-06-03 11:16:13 UTC (rev 47370)
+++ trunk/blender/intern/itasc/kdl/tree.hpp 2012-06-03 12:00:41 UTC (rev 47371)
@@ -43,7 +43,7 @@
#endif
class TreeElement
{
- private:
+ public:
TreeElement():q_nr(0)
{};
public:
More information about the Bf-blender-cvs
mailing list