From b9504539dfc8c9e47a88e9a9691322625f19052d Mon Sep 17 00:00:00 2001
From: roangel <roangel@student.ethz.ch>
Date: Thu, 1 Jun 2017 15:33:04 +0200
Subject: [PATCH] fixed weird crash when removing all CFZones

---
 .../GUI_Qt/CrazyFlyGUI/include/myGraphicsScene.h       |  2 ++
 .../GUI_Qt/CrazyFlyGUI/src/mainguiwindow.cpp           |  6 +-----
 .../GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp         | 10 ++++++++++
 pps_ws/src/d_fall_pps/param/Crazyflie.db               |  5 +++--
 4 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsScene.h b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsScene.h
index b1e5f4da..c3ffa601 100755
--- a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsScene.h
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/include/myGraphicsScene.h
@@ -46,6 +46,8 @@ public:
 
     void addCFZone(QRectF rect, int index);
 
+    void removeAllCFZones();
+
 public slots:
     void removeCrazyFlyZone(int cf_zone_index);
     void setSelectedCrazyFlyZone(int index);
diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/mainguiwindow.cpp b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/mainguiwindow.cpp
index 37a817a4..61710e13 100755
--- a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/mainguiwindow.cpp
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/mainguiwindow.cpp
@@ -821,11 +821,7 @@ void MainGUIWindow::on_load_from_DB_button_clicked()
 
         cf_linker->clear_all_links();
         // remove all cf_zones existing
-
-        for(int j = scene->crazyfly_zones.size() - 1; j >= 0; j--)
-        {
-            scene->removeCrazyFlyZone(scene->crazyfly_zones[j]->getIndex());
-        }
+        scene->removeAllCFZones();
 
         int size = scene->crazyfly_zones.size();
         ROS_INFO("vector_cf_zones_size %d", size);
diff --git a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp
index c56196d6..c8bda3c4 100755
--- a/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp
+++ b/pps_ws/src/d_fall_pps/GUI_Qt/CrazyFlyGUI/src/myGraphicsScene.cpp
@@ -349,6 +349,16 @@ void myGraphicsScene::removeCrazyFlyZone(int cf_zone_index)
     }
 }
 
+void myGraphicsScene::removeAllCFZones()
+{
+    for(int i = 0; i < crazyfly_zones.size(); i++)
+    {
+        this->removeItem(crazyfly_zones[i]);
+    }
+    crazyfly_zones.clear();
+    emit numCrazyFlyZonesChanged(0);
+}
+
 void myGraphicsScene::removeTable()
 {
     for(int i = 0; i < table_pieces.size(); i++)
diff --git a/pps_ws/src/d_fall_pps/param/Crazyflie.db b/pps_ws/src/d_fall_pps/param/Crazyflie.db
index b9f4f06c..a4c31853 100644
--- a/pps_ws/src/d_fall_pps/param/Crazyflie.db
+++ b/pps_ws/src/d_fall_pps/param/Crazyflie.db
@@ -1,2 +1,3 @@
-1,CF1,,0,-0.58,1.22,0,0.97,1.89,0
-2,CF2,,1,-0.19,0.15,0,0.85,0.96,0
+1,CF1,,0,2.30378,0.506831,0,4.29424,2.29456,0
+2,CF2,,1,1.59421,0.884651,0,2.66317,1.62186,0
+3,CF3,,2,1.51128,1.97203,0,3.11471,2.82904,0
-- 
GitLab