+RegionFactory::add_to_region_name_maps (boost::shared_ptr<Region> region)
+{
+ update_region_name_number_map (region);
+
+ Glib::Threads::Mutex::Lock lm (region_name_maps_mutex);
+ region_name_map[region->name()] = region->id ();
+}
+
+/** Account for a region rename in the two region name maps */
+void
+RegionFactory::rename_in_region_name_maps (boost::shared_ptr<Region> region)
+{
+ update_region_name_number_map (region);
+
+ Glib::Threads::Mutex::Lock lm (region_name_maps_mutex);
+
+ map<string, PBD::ID>::iterator i = region_name_map.begin();
+ while (i != region_name_map.end() && i->second != region->id ()) {
+ ++i;
+ }
+
+ /* Erase the entry for the old name and put in a new one */
+ if (i != region_name_map.end()) {
+ region_name_map.erase (i);
+ region_name_map[region->name()] = region->id ();
+ }
+}
+
+/** Remove a region's details from the region_name_map */
+void
+RegionFactory::remove_from_region_name_map (string n)
+{
+ map<string, PBD::ID>::iterator i = region_name_map.find (n);
+ if (i != region_name_map.end ()) {
+ region_name_map.erase (i);
+ }
+}
+
+/** Update a region's entry in the region_name_number_map */
+void
+RegionFactory::update_region_name_number_map (boost::shared_ptr<Region> region)