From ce234f363e95c38fc92728e520bf5ba240a89aa7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 25 Aug 2006 01:07:15 +0000 Subject: use shared_ptr<> for all region handling git-svn-id: svn://localhost/ardour2/trunk@852 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor_audio_import.cc | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) (limited to 'gtk2_ardour/editor_audio_import.cc') diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 71e28c9a1d..ebff933514 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -31,6 +31,7 @@ #include #include #include +#include #include #include "ardour_ui.h" @@ -176,8 +177,8 @@ Editor::import_sndfile (Glib::ustring path, ImportMode mode, AudioTrack* track, /* import thread finished - see if we should build a new track */ if (!import_status.new_regions.empty()) { - AudioRegion& region (*import_status.new_regions.front()); - finish_bringing_in_audio (region, region.n_channels(), region.n_channels(), track, pos, mode); + boost::shared_ptr region (import_status.new_regions.front()); + finish_bringing_in_audio (region, region->n_channels(), region->n_channels(), track, pos, mode); } track_canvas.get_window()->set_cursor (*current_canvas_cursor); @@ -189,8 +190,8 @@ Editor::embed_sndfile (Glib::ustring path, bool split, bool multiple_files, bool AudioTrack* track, jack_nframes_t& pos, bool prompt) { AudioFileSource *source = 0; /* keep g++ quiet */ - AudioRegion::SourceList sources; - AudioRegion* region; + SourceList sources; + boost::shared_ptr region; string idspec; string linked_path; SoundFileInfo finfo; @@ -287,18 +288,18 @@ Editor::embed_sndfile (Glib::ustring path, bool split, bool multiple_files, bool region_name = PBD::basename_nosuffix (path); region_name += "-0"; - region = new AudioRegion (sources, 0, sources[0]->length(), region_name, 0, - Region::Flag (Region::DefaultFlags|Region::WholeFile|Region::External)); + region = boost::dynamic_pointer_cast (RegionFactory::create (sources, 0, sources[0]->length(), region_name, 0, + Region::Flag (Region::DefaultFlags|Region::WholeFile|Region::External))); input_chan = finfo.channels; - + if (session->get_output_auto_connect() & Session::AutoConnectMaster) { output_chan = (session->master_out() ? session->master_out()->n_inputs() : input_chan); } else { output_chan = input_chan; } - finish_bringing_in_audio (*region, input_chan, output_chan, track, pos, mode); + finish_bringing_in_audio (region, input_chan, output_chan, track, pos, mode); out: track_canvas.get_window()->set_cursor (*current_canvas_cursor); @@ -306,10 +307,8 @@ Editor::embed_sndfile (Glib::ustring path, bool split, bool multiple_files, bool } int -Editor::finish_bringing_in_audio (AudioRegion& region, uint32_t in_chans, uint32_t out_chans, AudioTrack* track, jack_nframes_t& pos, ImportMode mode) +Editor::finish_bringing_in_audio (boost::shared_ptr region, uint32_t in_chans, uint32_t out_chans, AudioTrack* track, jack_nframes_t& pos, ImportMode mode) { - AudioRegion* copy; - switch (mode) { case ImportAsRegion: /* relax, its been done */ @@ -319,14 +318,14 @@ Editor::finish_bringing_in_audio (AudioRegion& region, uint32_t in_chans, uint32 if (track) { Playlist* playlist = track->diskstream()->playlist(); - AudioRegion* copy = new AudioRegion (region); + boost::shared_ptr copy (boost::dynamic_pointer_cast (RegionFactory::create (region))); begin_reversible_command (_("insert sndfile")); XMLNode &before = playlist->get_state(); - playlist->add_region (*copy, pos); + playlist->add_region (copy, pos); session->add_command (new MementoCommand(*playlist, &before, &playlist->get_state())); commit_reversible_command (); - pos += region.length(); + pos += region->length(); } break; @@ -334,8 +333,8 @@ Editor::finish_bringing_in_audio (AudioRegion& region, uint32_t in_chans, uint32 { list > at (session->new_audio_track (in_chans, out_chans, Normal, 1)); if (!at.empty()) { - copy = new AudioRegion (region); - at.front()->diskstream()->playlist()->add_region (*copy, pos); + boost::shared_ptr copy (boost::dynamic_pointer_cast (RegionFactory::create (region))); + at.front()->diskstream()->playlist()->add_region (copy, pos); } break; } @@ -344,8 +343,8 @@ Editor::finish_bringing_in_audio (AudioRegion& region, uint32_t in_chans, uint32 { list > at (session->new_audio_track (in_chans, out_chans, Destructive)); if (!at.empty()) { - copy = new AudioRegion (region); - at.front()->diskstream()->playlist()->add_region (*copy, pos); + boost::shared_ptr copy (boost::dynamic_pointer_cast (RegionFactory::create (region))); + at.front()->diskstream()->playlist()->add_region (copy, pos); } break; } -- cgit v1.2.3