|
From: <br...@us...> - 2010-04-29 03:42:14
|
Revision: 4131
http://openvrml.svn.sourceforge.net/openvrml/?rev=4131&view=rev
Author: braden
Date: 2010-04-29 03:42:07 +0000 (Thu, 29 Apr 2010)
Log Message:
-----------
Maintain a lock on the load_root_scene_thread_mutex_ instead of letting one go and reacquiring.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/libopenvrml/openvrml/browser.cpp
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2010-04-28 16:25:15 UTC (rev 4130)
+++ trunk/ChangeLog 2010-04-29 03:42:07 UTC (rev 4131)
@@ -1,5 +1,13 @@
2010-04-28 Braden McDaniel <br...@en...>
+ * src/libopenvrml/openvrml/browser.cpp
+ (openvrml::browser::load_url(const std::vector<std::string> &,
+ const std::vector<std::string> &)): Maintain a lock on the
+ load_root_scene_thread_mutex_ instead of letting one go and
+ reacquiring.
+
+2010-04-28 Braden McDaniel <br...@en...>
+
* src/Makefile.am (node_x3d_cad_geometry_la_SOURCES): Added
missing register_node_metatypes.cpp.
Modified: trunk/src/libopenvrml/openvrml/browser.cpp
===================================================================
--- trunk/src/libopenvrml/openvrml/browser.cpp 2010-04-28 16:25:15 UTC (rev 4130)
+++ trunk/src/libopenvrml/openvrml/browser.cpp 2010-04-29 03:42:07 UTC (rev 4131)
@@ -2077,20 +2077,18 @@
const std::vector<std::string> &)
OPENVRML_THROW2(std::bad_alloc, boost::thread_resource_error)
{
- using boost::unique_lock;
+ using boost::upgrade_lock;
+ using boost::upgrade_to_unique_lock;
using boost::shared_mutex;
- {
- using boost::shared_lock;
- shared_lock<shared_mutex> lock(this->load_root_scene_thread_mutex_);
- if (this->load_root_scene_thread_) {
- this->load_root_scene_thread_->join();
- }
+ upgrade_lock<shared_mutex> read_lock(this->load_root_scene_thread_mutex_);
+ if (this->load_root_scene_thread_) {
+ this->load_root_scene_thread_->join();
}
boost::function0<void> f = root_scene_loader(*this, url);
- unique_lock<shared_mutex> lock(this->load_root_scene_thread_mutex_);
+ upgrade_to_unique_lock<shared_mutex> write_lock(read_lock);
this->load_root_scene_thread_.reset(new boost::thread(f));
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|