Index: /trunk/BNC/src/PPP/pppMain.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppMain.cpp	(revision 5728)
+++ /trunk/BNC/src/PPP/pppMain.cpp	(revision 5729)
@@ -83,4 +83,9 @@
   if (!_running) {
     return;
+  }
+  QListIterator<t_pppThread*> it(_pppThreads);
+  while (it.hasNext()) {
+    t_pppThread* pppThread = it.next();
+    pppThread->exit();
   }
   _running = false;
Index: /trunk/BNC/src/PPP/pppThread.cpp
===================================================================
--- /trunk/BNC/src/PPP/pppThread.cpp	(revision 5728)
+++ /trunk/BNC/src/PPP/pppThread.cpp	(revision 5729)
@@ -66,9 +66,11 @@
 void t_pppThread::run() {
 
+  cout << _opt._roverName << " run" << endl;
+
   // Connect to BNC Signals
   // ----------------------
   if (BNC_CORE->caster()) {
-    connect(BNC_CORE->caster().data(), SIGNAL(newObs(QByteArray, QList<t_obs>)),
-          this,      SLOT(slotNewObs(QByteArray, QList<t_obs>)));
+    connect(BNC_CORE->caster(), SIGNAL(newObs(QByteArray, QList<t_obs>)),
+            this, SLOT(slotNewObs(QByteArray, QList<t_obs>)));
 
     connect(BNC_CORE, SIGNAL(newEphGPS(gpsephemeris)),
@@ -88,4 +90,6 @@
   // ---------------------
   QThread::exec();
+
+  cout << _opt._roverName << " exit" << endl;
 }
 
Index: /trunk/BNC/src/bnccore.cpp
===================================================================
--- /trunk/BNC/src/bnccore.cpp	(revision 5728)
+++ /trunk/BNC/src/bnccore.cpp	(revision 5729)
@@ -73,4 +73,5 @@
   _logStream   = 0;
   _rawFile     = 0;
+  _caster      = 0;
 #ifdef USE_COMBINATION
   _bncComb     = 0;
@@ -630,5 +631,5 @@
 void t_bncCore::slotQuit() {
   cout << "t_bncCore::slotQuit" << endl;
-  _caster.clear();
+  delete _caster; _caster = 0;
   qApp->quit();
 }
Index: /trunk/BNC/src/bnccore.h
===================================================================
--- /trunk/BNC/src/bnccore.h	(revision 5728)
+++ /trunk/BNC/src/bnccore.h	(revision 5729)
@@ -51,7 +51,6 @@
     void setPort(int port);
     void setPortCorr(int port);
-    void setCaster(QSharedPointer<bncCaster> caster) {_caster = caster;}
-    void deleteCaster() {_caster.clear();}
-    QSharedPointer<bncCaster> caster() const {return _caster;}
+    void setCaster(bncCaster* caster) {_caster = caster;}
+    const bncCaster* caster() const {return _caster;}
     QDateTime* _currentDateAndTimeGPS;
     void setConfFileName(const QString& confFileName);
@@ -129,5 +128,5 @@
     QTcpServer*         _serverNMEA;
     QList<QTcpSocket*>* _socketsNMEA;
-    QSharedPointer<bncCaster> _caster;
+    bncCaster*          _caster;
     QMap<QString, bncTime> _lastCorrDumpTime;
     double              _waitCoTime;
Index: /trunk/BNC/src/bncmain.cpp
===================================================================
--- /trunk/BNC/src/bncmain.cpp	(revision 5728)
+++ /trunk/BNC/src/bncmain.cpp	(revision 5729)
@@ -193,5 +193,5 @@
     bncEphUploadCaster* casterEph = new bncEphUploadCaster(); (void) casterEph;
     
-    QSharedPointer<bncCaster> caster(new bncCaster());
+    bncCaster* caster = new bncCaster();
     
     BNC_CORE->setCaster(caster);
@@ -200,5 +200,5 @@
     BNC_CORE->initCombination();
     
-    BNC_CORE->connect(caster.data(), SIGNAL(getThreadsFinished()), &app, SLOT(quit()));
+    BNC_CORE->connect(caster, SIGNAL(getThreadsFinished()), &app, SLOT(quit()));
     
     BNC_CORE->slotMessage("========== Start BNC v" BNCVERSION " =========", true);
Index: /trunk/BNC/src/bncwindow.cpp
===================================================================
--- /trunk/BNC/src/bncwindow.cpp	(revision 5728)
+++ /trunk/BNC/src/bncwindow.cpp	(revision 5729)
@@ -90,4 +90,5 @@
 #endif
 
+  _caster    = 0;
   _casterEph = 0;
 
@@ -1527,5 +1528,5 @@
 ////////////////////////////////////////////////////////////////////////////
 bncWindow::~bncWindow() {
-  _caster.clear(); BNC_CORE->deleteCaster();
+  delete _caster; BNC_CORE->setCaster(0);
   delete _casterEph;
   delete _pppMain;
@@ -1990,5 +1991,5 @@
 void bncWindow::slotGetThreadsFinished() {
   BNC_CORE->slotMessage("All Get Threads Terminated", true);
-  _caster.clear(); BNC_CORE->deleteCaster();
+  delete _caster;    _caster    = 0; BNC_CORE->setCaster(0);
   delete _casterEph; _casterEph = 0;
   _runningRealTime = false;
@@ -2025,5 +2026,5 @@
   enableStartStop();
 
-  _caster = QSharedPointer<bncCaster>(new bncCaster());
+  _caster = new bncCaster();
 
   BNC_CORE->setCaster(_caster);
@@ -2032,8 +2033,8 @@
   BNC_CORE->initCombination();
 
-  connect(_caster.data(), SIGNAL(getThreadsFinished()), 
+  connect(_caster, SIGNAL(getThreadsFinished()), 
           this, SLOT(slotGetThreadsFinished()));
 
-  connect (_caster.data(), SIGNAL(mountPointsRead(QList<bncGetThread*>)), 
+  connect (_caster, SIGNAL(mountPointsRead(QList<bncGetThread*>)), 
            this, SLOT(slotMountPointsRead(QList<bncGetThread*>)));
 
@@ -2087,5 +2088,5 @@
     }
     BNC_CORE->stopCombination();
-    _caster.clear(); BNC_CORE->deleteCaster();
+    delete _caster;    _caster    = 0; BNC_CORE->setCaster(0);
     delete _casterEph; _casterEph = 0;
     _runningRealTime = false;
Index: /trunk/BNC/src/bncwindow.h
===================================================================
--- /trunk/BNC/src/bncwindow.h	(revision 5728)
+++ /trunk/BNC/src/bncwindow.h	(revision 5729)
@@ -260,6 +260,5 @@
     bncBytesCounter* _uploadEphBytesCounter;
 
-    QSharedPointer<bncCaster> _caster;
-
+    bncCaster*          _caster;
     bncEphUploadCaster* _casterEph;
 
