- // Termino plantas.
- Glib::Mutex::Lock lock(plants_mutex);
- for (PlantList::iterator i = plants.end(); i != plants.end(); i++) {
- i->second->finish(true);
+ // Mando a terminar todas las plantas.
+ plants_mutex.lock();
+ for (PlantList::iterator i = plants.begin(); i != plants.end(); i++) {
+ i->second->finish();
+ }
+ PlantList::size_type count = plants.size();
+ plants_mutex.unlock();
+ // Espero que terminen realmente.
+ while (count) {
+ Glib::usleep(10000); // 10 milisegundos
+ plants_mutex.lock();
+ count = plants.size();
+ plants_mutex.unlock();