From: Braden M. <br...@us...> - 2007-03-06 03:26:05
|
Update of /cvsroot/openvrml/openvrml/src/libopenvrml/openvrml In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv18937/src/libopenvrml/openvrml Modified Files: Tag: OpenVRML-0_16-BRANCH 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.190.2.10 retrieving revision 1.190.2.11 diff -C2 -d -r1.190.2.10 -r1.190.2.11 *** browser.cpp 24 Feb 2007 07:38:58 -0000 1.190.2.10 --- browser.cpp 6 Mar 2007 03:25:59 -0000 1.190.2.11 *************** *** 5523,5526 **** --- 5523,5527 ---- openvrml::browser::~browser() OPENVRML_NOTHROW { + this->load_root_scene_thread_->join(); this->load_proto_thread_group_.join_all(); *************** *** 6155,6160 **** OPENVRML_THROW2(std::bad_alloc, boost::thread_resource_error) { boost::function0<void> f = root_scene_loader(*this, url); ! boost::thread t(f); } --- 6156,6164 ---- 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)); } *************** *** 6226,6229 **** --- 6230,6237 ---- 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.61 retrieving revision 1.61.2.1 diff -C2 -d -r1.61 -r1.61.2.1 *** browser.h 28 Jul 2006 07:04:19 -0000 1.61 --- browser.h 6 Mar 2007 03:25:59 -0000 1.61.2.1 *************** *** 221,224 **** --- 221,225 ---- 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_; |