From: Braden M. <br...@us...> - 2007-03-06 03:26:16
|
Update of /cvsroot/openvrml/openvrml/src/libopenvrml/openvrml In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv19310/src/libopenvrml/openvrml Modified Files: browser.cpp browser.h Log Message: Join the thread spawned by browser::load_url in browser's destructor. Index: browser.cpp =================================================================== RCS file: /cvsroot/openvrml/openvrml/src/libopenvrml/openvrml/browser.cpp,v retrieving revision 1.204 retrieving revision 1.205 diff -C2 -d -r1.204 -r1.205 *** browser.cpp 24 Feb 2007 07:39:11 -0000 1.204 --- browser.cpp 6 Mar 2007 03:26:15 -0000 1.205 *************** *** 5693,5696 **** --- 5693,5697 ---- openvrml::browser::~browser() OPENVRML_NOTHROW { + this->load_root_scene_thread_->join(); this->load_proto_thread_group_.join_all(); *************** *** 6190,6195 **** OPENVRML_THROW2(std::bad_alloc, boost::thread_resource_error) { boost::function0<void> f = root_scene_loader(*this, url); ! boost::thread t(f); } --- 6191,6199 ---- OPENVRML_THROW2(std::bad_alloc, boost::thread_resource_error) { + if (this->load_root_scene_thread_) { + this->load_root_scene_thread_->join(); + } boost::function0<void> f = root_scene_loader(*this, url); ! this->load_root_scene_thread_.reset(new boost::thread(f)); } *************** *** 6261,6264 **** --- 6265,6272 ---- parse_vrml(in, stream_id.str(), type, *this->scene_, nodes, meta); } catch (openvrml::bad_media_type & ex) { + // + // bad_media_type is a std::runtime_error. However, here we're using + // the media type as an argument. + // throw std::invalid_argument(ex.what()); } Index: browser.h =================================================================== RCS file: /cvsroot/openvrml/openvrml/src/libopenvrml/openvrml/browser.h,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** browser.h 22 Nov 2006 00:05:18 -0000 1.62 --- browser.h 6 Mar 2007 03:26:15 -0000 1.63 *************** *** 234,237 **** --- 234,238 ---- std::auto_ptr<null_node_metatype> null_node_metatype_; std::auto_ptr<null_node_type> null_node_type_; + boost::scoped_ptr<boost::thread> load_root_scene_thread_; boost::thread_group load_proto_thread_group_; node_metatype_map node_metatype_map_; |