From e3f5e9b1db45a33646b9861c1b23a7fe4140f671 Mon Sep 17 00:00:00 2001
From: joanvallve <jvallve@iri.upc.edu>
Date: Sun, 14 Jun 2020 17:26:53 +0200
Subject: [PATCH] working PM filling missing stateblocks of frames

---
 src/processor/processor_motion.cpp | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/src/processor/processor_motion.cpp b/src/processor/processor_motion.cpp
index cd2d78caa..d47dbbad3 100644
--- a/src/processor/processor_motion.cpp
+++ b/src/processor/processor_motion.cpp
@@ -212,13 +212,12 @@ void ProcessorMotion::processCapture(CaptureBasePtr _incoming_ptr)
 
             // update KF state (adding missing StateBlocks)
             auto proc_state = getState(ts_from_callback);
-            if (keyframe_from_callback->getStructure() != proc_state.getStructure())
-                for (auto ckey : proc_state.getStructure())
-                    if (!keyframe_from_callback->isInStructure(std::string(1,ckey)))
-                        keyframe_from_callback->addStateBlock(std::string(1,ckey),
-                                                              FactoryStateBlock::create(std::string(1,ckey),
-                                                                                        proc_state[std::string(1,ckey)],
-                                                                                        false));
+            for (auto pair_ckey_vec : proc_state)
+                if (!keyframe_from_callback->isInStructure(pair_ckey_vec.first))
+                    keyframe_from_callback->addStateBlock(pair_ckey_vec.first,
+                                                          FactoryStateBlock::create(pair_ckey_vec.first,
+                                                                                    pair_ckey_vec.second,
+                                                                                    false));
             keyframe_from_callback->setState(proc_state);
 
             // Find the capture acting as the buffer's origin
@@ -314,13 +313,12 @@ void ProcessorMotion::processCapture(CaptureBasePtr _incoming_ptr)
 
             // update KF state (adding missing StateBlocks)
             auto proc_state = getState(ts_from_callback);
-            if (keyframe_from_callback->getStructure() != proc_state.getStructure())
-                for (auto ckey : proc_state.getStructure())
-                    if (!keyframe_from_callback->isInStructure(std::string(1,ckey)))
-                        keyframe_from_callback->addStateBlock(std::string(1,ckey),
-                                                              FactoryStateBlock::create(std::string(1,ckey),
-                                                                                        proc_state[std::string(1,ckey)],
-                                                                                        false));
+            for (auto pair_ckey_vec : proc_state)
+                if (!keyframe_from_callback->isInStructure(pair_ckey_vec.first))
+                    keyframe_from_callback->addStateBlock(pair_ckey_vec.first,
+                                                          FactoryStateBlock::create(pair_ckey_vec.first,
+                                                                                    pair_ckey_vec.second,
+                                                                                    false));
             keyframe_from_callback->setState(proc_state);
 
             auto & capture_existing = last_ptr_;
-- 
GitLab