+ /** create a region with specified sources @param srcs and XML state */
+ static boost::shared_ptr<Region> create (SourceList& srcs, const XMLNode&);
+
+ static void get_regions_using_source (boost::shared_ptr<Source>, std::set<boost::shared_ptr<Region> >& );
+
+ static void map_remove (boost::shared_ptr<Region>);
+ static void map_remove_with_equivalents (boost::shared_ptr<Region>);
+ static void delete_all_regions ();
+ static const RegionMap& regions() { return region_map; }
+ static uint32_t nregions ();
+
+ static int region_name (std::string &, std::string, bool new_level = false);
+ static std::string new_region_name (std::string);
+
+ private:
+
+ static boost::shared_ptr<Region> create (boost::shared_ptr<Region>, frameoffset_t offset,
+ bool offset_relative,
+ const PBD::PropertyList&, bool announce = true);
+
+ static void region_changed (PBD::PropertyChange const &, boost::weak_ptr<Region>);
+
+ static Glib::StaticMutex region_map_lock;
+
+ static RegionMap region_map;
+ static void map_add (boost::shared_ptr<Region>);
+
+ static Glib::StaticMutex region_name_map_lock;
+
+ static std::map<std::string, uint32_t> region_name_map;
+ static void update_region_name_map (boost::shared_ptr<Region>);
+
+ static PBD::ScopedConnectionList region_list_connections;