diff --git a/src/io/pipeer.cpp b/src/io/pipeer.cpp index 7b081e20..e2acf4f6 100755 --- a/src/io/pipeer.cpp +++ b/src/io/pipeer.cpp @@ -406,6 +406,7 @@ bool PIPeer::mbcastRead(uchar * data, int size) { case 2: // remove peer //piCout << "remove peer packet ..." << pi.name; peers_mutex.lock(); + removeNeighbour(pi.name); rpi = getPeerByName(pi.name); if (rpi) { dist = rpi->dist; @@ -465,6 +466,7 @@ bool PIPeer::mbcastRead(uchar * data, int size) { peer.addNeighbours(rpeer.neighbours); rpeer.neighbours = peer.neighbours; if (peer.name == pi.name) peer.sync = 0; + ch = true; } piBreak; } @@ -543,7 +545,6 @@ void PIPeer::removeNeighbour(const PIString & name) { bool PIPeer::removePeer(const PIString & name) { - removeNeighbour(name); for (int i = 0; i < peers.size_s(); ++i) if (peers[i].name == name) { peers.remove(i); diff --git a/utils/system_daemon/daemon.cpp b/utils/system_daemon/daemon.cpp index 5298ccdf..26c86a9e 100644 --- a/utils/system_daemon/daemon.cpp +++ b/utils/system_daemon/daemon.cpp @@ -64,6 +64,7 @@ void Daemon::showTile(PIScreenTile * t, const PIString & header) { tile_header->content.resize(1); tile_header->content[0].first = header; tile_header->content[0].second.flags = Bold; + lock(); if (!conn_name.isEmpty()) tile_header->content[0].first.insert(0, PIString("Daemon \"") + connectedDaemon() + "\": "); /*PIString s; @@ -73,6 +74,7 @@ void Daemon::showTile(PIScreenTile * t, const PIString & header) { tile_header->content.resize(1); tile_header->content[0].first = s; tile_header->content[0].second.flags = Bold;*/ + unlock(); }