X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=utils%2FTerraSync%2Fterrasync.cxx;h=8063b3c3720bf5a193cfc2b2ffa8a4806589daf3;hb=8862b3e2b3a30d45df23e80a270b6be6b6476b95;hp=b1d220d2fd41be3e8e05ba4a1982b592998f6389;hpb=83ece7efecb9d83b480ffa4e9b0b5015665a6c01;p=flightgear.git diff --git a/utils/TerraSync/terrasync.cxx b/utils/TerraSync/terrasync.cxx index b1d220d2f..8063b3c37 100644 --- a/utils/TerraSync/terrasync.cxx +++ b/utils/TerraSync/terrasync.cxx @@ -377,13 +377,17 @@ static void sync_areas( int lat, int lon, int lat_dir, int lon_dir ) { } void getWaitingTile() { - CompletedTiles::iterator ii = completedTiles.find( waitingTiles.front() ); - time_t now = time(0); - if ( ii == completedTiles.end() || ii->second + 600 < now ) { - sync_tree(waitingTiles.front().c_str()); - completedTiles[ waitingTiles.front() ] = now; + while ( !waitingTiles.empty() ) { + CompletedTiles::iterator ii = completedTiles.find( waitingTiles.front() ); + time_t now = time(0); + if ( ii == completedTiles.end() || ii->second + 600 < now ) { + sync_tree(waitingTiles.front().c_str()); + completedTiles[ waitingTiles.front() ] = now; + waitingTiles.pop_front(); + break; + } + waitingTiles.pop_front(); } - waitingTiles.pop_front(); } int main( int argc, char **argv ) { @@ -468,7 +472,8 @@ int main( int argc, char **argv ) { if ( recv_msg ) { if ( lat != last_lat || lon != last_lon ) { cout << "pos in msg = " << lat << "," << lon << endl; - waitingTiles.clear(); + std::deque oldRequests; + oldRequests.swap( waitingTiles ); int lat_dir, lon_dir, dist; if ( last_lat == nowhere || last_lon == nowhere ) { lat_dir = lon_dir = 0; @@ -490,6 +495,10 @@ int main( int argc, char **argv ) { cout << "lat_dir = " << lat_dir << " " << "lon_dir = " << lon_dir << endl; sync_areas( lat, lon, lat_dir, lon_dir ); + while ( !oldRequests.empty() ) { + waitingTiles.push_back( oldRequests.front() ); + oldRequests.pop_front(); + } } else if ( !waitingTiles.empty() ) { getWaitingTile(); } else {