[Marble-commits] KDE/kdeedu/marble/src/lib

Dennis Nienhüser earthwings at gentoo.org
Fri Nov 6 16:53:52 CET 2009


SVN commit 1045679 by nienhueser:

Clear orphane search results from the model so that they do not appear as empty entries at the end of the search result list after several searches.
Guard access to the model to prevent crashes when modifying it concurrently. Cannot be done in the model itself easily since it doesn't encapsulate its data storage.
CCBUG: 206534


 M  +6 -0      MarbleRunnerManager.cpp  
 M  +2 -1      MarbleRunnerManager.h  


--- trunk/KDE/kdeedu/marble/src/lib/MarbleRunnerManager.cpp #1045678:1045679
@@ -62,7 +62,11 @@
 void MarbleRunnerManager::newText(QString text)
 {
     m_lastString = text;
+    
+    m_modelMutex.lock();
+    m_model->removePlacemarks("MarbleRunnerManager", 0, m_placemarkContainer.size());
     m_placemarkContainer.clear();
+    m_modelMutex.unlock();
     emit modelChanged( m_model );
 
     LatLonRunner* llrunner = new LatLonRunner;
@@ -90,9 +94,11 @@
     if( result.isEmpty() )
         return;
 
+    m_modelMutex.lock();
     int start = m_placemarkContainer.size();
     m_placemarkContainer << result;
     m_model->addPlacemarks( start, result.size() );
+    m_modelMutex.unlock();
     emit modelChanged( m_model );
 }
 
--- trunk/KDE/kdeedu/marble/src/lib/MarbleRunnerManager.h #1045678:1045679
@@ -24,6 +24,7 @@
 #include <QtCore/QObject>
 #include <QtCore/QVector>
 #include <QtCore/QString>
+#include <QtCore/QMutex>
 
 namespace Marble
 {
@@ -54,7 +55,7 @@
     MarblePlacemarkModel *m_model;
     QList<MarbleAbstractRunner*> m_runners;
     QVector<GeoDataPlacemark> m_placemarkContainer;
-    
+    QMutex m_modelMutex;
 };
 
 }


More information about the Marble-commits mailing list