diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-08-29 00:23:45 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-08-29 00:23:45 +0000 |
commit | 6535cd1b1dbab7cc59a356c81d92dbc2cf25333b (patch) | |
tree | 90002ec1819c61db4b0981405d27535af3a79f70 /gtk2_ardour | |
parent | c871ca6d9833ebda3bf286462b96146550b49cef (diff) |
used shared_ptr<Source>, somewhat successfully
git-svn-id: svn://localhost/ardour2/trunk@861 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/audio_region_view.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/audio_streamview.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/audio_streamview.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/crossfade_edit.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_audio_import.cc | 5 | ||||
-rw-r--r-- | gtk2_ardour/editor_export_audio.cc | 27 | ||||
-rw-r--r-- | gtk2_ardour/editor_region_list.cc | 16 | ||||
-rw-r--r-- | gtk2_ardour/sfdb_ui.cc | 7 | ||||
-rw-r--r-- | gtk2_ardour/tape_region_view.cc | 2 |
11 files changed, 41 insertions, 40 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 66374ff417..f2ab470c3d 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -2156,12 +2156,12 @@ ARDOUR_UI::halt_on_xrun_message () } void -ARDOUR_UI::delete_sources_in_the_right_thread (list<ARDOUR::Source*>* deletion_list) +ARDOUR_UI::delete_sources_in_the_right_thread (list<boost::shared_ptr<ARDOUR::Source> >* deletion_list) { ENSURE_GUI_THREAD (bind (mem_fun(*this, &ARDOUR_UI::delete_sources_in_the_right_thread), deletion_list)); - for (list<Source*>::iterator i = deletion_list->begin(); i != deletion_list->end(); ++i) { - delete *i; + for (list<boost::shared_ptr<Source> >::iterator i = deletion_list->begin(); i != deletion_list->end(); ++i) { + (*i)->drop_references (); } delete deletion_list; diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index cafa335bf2..5a9b7c4ae4 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -638,7 +638,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI struct timeval last_peak_grab; struct timeval last_shuttle_request; - void delete_sources_in_the_right_thread (list<ARDOUR::Source*>*); + void delete_sources_in_the_right_thread (list<boost::shared_ptr<ARDOUR::Source> >*); void editor_display_control_changed (Editing::DisplayControl c); diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 19c8702e89..86786b801f 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -761,7 +761,7 @@ AudioRegionView::create_waves () wave_caches.push_back (WaveView::create_cache ()); if (wait_for_data) { - if (audio_region()->source(n).peaks_ready (bind (mem_fun(*this, &AudioRegionView::peaks_ready_handler), n), data_ready_connection)) { + if (audio_region()->source(n)->peaks_ready (bind (mem_fun(*this, &AudioRegionView::peaks_ready_handler), n), data_ready_connection)) { create_one_wave (n, true); } else { create_zero_line = false; diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index c0b3ba4c39..beb8cb8d2e 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -25,7 +25,7 @@ #include <ardour/audioplaylist.h> #include <ardour/audioregion.h> -#include <ardour/audiosource.h> +#include <ardour/audiofilesource.h> #include <ardour/audio_diskstream.h> #include <ardour/audio_track.h> #include <ardour/playlist_templates.h> @@ -404,7 +404,7 @@ AudioStreamView::setup_rec_box () assert(ads); for (uint32_t n=0; n < ads->n_channels(); ++n) { - AudioSource *src = (AudioSource *) ads->write_source (n); + boost::shared_ptr<AudioFileSource> src = boost::static_pointer_cast<AudioFileSource> (ads->write_source (n)); if (src) { sources.push_back (src); peak_ready_connections.push_back (src->PeakRangeReady.connect (bind (mem_fun (*this, &AudioStreamView::rec_peak_range_ready), src))); @@ -530,7 +530,7 @@ AudioStreamView::foreach_crossfadeview (void (CrossfadeView::*pmf)(void)) } void -AudioStreamView::rec_peak_range_ready (jack_nframes_t start, jack_nframes_t cnt, Source * src) +AudioStreamView::rec_peak_range_ready (jack_nframes_t start, jack_nframes_t cnt, boost::shared_ptr<Source> src) { // this is called from the peak building thread @@ -605,7 +605,7 @@ AudioStreamView::update_rec_regions () if (nlen != region->length()) { - if (region->source(0).length() >= region->start() + nlen) { + if (region->source(0)->length() >= region->start() + nlen) { region->freeze (); region->set_position (_trackview.get_diskstream()->get_capture_start_frame(n), this); diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h index 8d5ab4117c..13b042eec8 100644 --- a/gtk2_ardour/audio_streamview.h +++ b/gtk2_ardour/audio_streamview.h @@ -76,7 +76,7 @@ class AudioStreamView : public StreamView private: void setup_rec_box (); - void rec_peak_range_ready (jack_nframes_t start, jack_nframes_t cnt, ARDOUR::Source* src); + void rec_peak_range_ready (jack_nframes_t start, jack_nframes_t cnt, boost::shared_ptr<ARDOUR::Source> src); void update_rec_regions (); void add_region_view_internal (boost::shared_ptr<ARDOUR::Region>, bool wait_for_waves); @@ -103,7 +103,7 @@ class AudioStreamView : public StreamView list<sigc::connection> peak_ready_connections; jack_nframes_t last_rec_peak_frame; - map<ARDOUR::Source*, bool> rec_peak_ready_map; + map<boost::shared_ptr<ARDOUR::Source>, bool> rec_peak_ready_map; }; diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index a89d4462ae..1d275d5e3b 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -1036,7 +1036,7 @@ CrossfadeEditor::make_waves (boost::shared_ptr<AudioRegion> region, WhichFade wh gdouble yoff = n * ht; - if (region->source(n).peaks_ready (bind (mem_fun(*this, &CrossfadeEditor::peaks_ready), region, which), peaks_ready_connection)) { + if (region->source(n)->peaks_ready (bind (mem_fun(*this, &CrossfadeEditor::peaks_ready), region, which), peaks_ready_connection)) { WaveView* waveview = new WaveView (*(canvas->root())); diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index ebff933514..fffad2e2eb 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -32,6 +32,7 @@ #include <ardour/audioplaylist.h> #include <ardour/audiofilesource.h> #include <ardour/region_factory.h> +#include <ardour/source_factory.h> #include <pbd/memento_command.h> #include "ardour_ui.h" @@ -189,7 +190,7 @@ int Editor::embed_sndfile (Glib::ustring path, bool split, bool multiple_files, bool& check_sample_rate, ImportMode mode, AudioTrack* track, jack_nframes_t& pos, bool prompt) { - AudioFileSource *source = 0; /* keep g++ quiet */ + boost::shared_ptr<AudioFileSource> source; SourceList sources; boost::shared_ptr<AudioRegion> region; string idspec; @@ -269,7 +270,7 @@ Editor::embed_sndfile (Glib::ustring path, bool split, bool multiple_files, bool idspec += string_compose(":%1", n); try { - source = AudioFileSource::create (idspec.c_str(), (mode == ImportAsTrack ? AudioFileSource::Destructive : AudioFileSource::Flag (0))); + source = boost::dynamic_pointer_cast<AudioFileSource> (SourceFactory::createReadable (idspec, (mode == ImportAsTrack ? AudioFileSource::Destructive : AudioFileSource::Flag (0)))); sources.push_back(source); } diff --git a/gtk2_ardour/editor_export_audio.cc b/gtk2_ardour/editor_export_audio.cc index 6eeff78d84..dc7fadb470 100644 --- a/gtk2_ardour/editor_export_audio.cc +++ b/gtk2_ardour/editor_export_audio.cc @@ -41,6 +41,8 @@ #include <ardour/audio_diskstream.h> #include <ardour/audioregion.h> #include <ardour/audioplaylist.h> +#include <ardour/source_factory.h> +#include <ardour/audiofilesource.h> #include "i18n.h" @@ -157,7 +159,7 @@ Editor::bounce_region_selection () bool Editor::write_region (string path, boost::shared_ptr<AudioRegion> region) { - AudioFileSource* fs; + boost::shared_ptr<AudioFileSource> fs; const jack_nframes_t chunk_size = 4096; jack_nframes_t to_read; Sample buf[chunk_size]; @@ -165,14 +167,14 @@ Editor::write_region (string path, boost::shared_ptr<AudioRegion> region) jack_nframes_t pos; char s[PATH_MAX+1]; uint32_t cnt; - vector<AudioFileSource *> sources; + vector<boost::shared_ptr<AudioFileSource> > sources; uint32_t nchans; nchans = region->n_channels(); /* don't do duplicate of the entire source if that's what is going on here */ - if (region->start() == 0 && region->length() == region->source().length()) { + if (region->start() == 0 && region->length() == region->source()->length()) { /* XXX should link(2) to create a new inode with "path" */ return true; } @@ -206,7 +208,7 @@ Editor::write_region (string path, boost::shared_ptr<AudioRegion> region) try { - fs = AudioFileSource::create (path); + fs = boost::dynamic_pointer_cast<AudioFileSource> (SourceFactory::createReadable (path, AudioFileSource::Flag (0))); } catch (failed_constructor& err) { @@ -229,7 +231,7 @@ Editor::write_region (string path, boost::shared_ptr<AudioRegion> region) this_time = min (to_read, chunk_size); - for (vector<AudioFileSource *>::iterator src=sources.begin(); src != sources.end(); ++src) { + for (vector<boost::shared_ptr<AudioFileSource> >::iterator src=sources.begin(); src != sources.end(); ++src) { fs = (*src); @@ -252,7 +254,7 @@ Editor::write_region (string path, boost::shared_ptr<AudioRegion> region) time (&tnow); now = localtime (&tnow); - for (vector<AudioFileSource *>::iterator src = sources.begin(); src != sources.end(); ++src) { + for (vector<boost::shared_ptr<AudioFileSource> >::iterator src = sources.begin(); src != sources.end(); ++src) { (*src)->update_header (0, *now, tnow); } @@ -260,10 +262,8 @@ Editor::write_region (string path, boost::shared_ptr<AudioRegion> region) error_out: - for (vector<AudioFileSource*>::iterator i = sources.begin(); i != sources.end(); ++i) { - + for (vector<boost::shared_ptr<AudioFileSource> >::iterator i = sources.begin(); i != sources.end(); ++i) { (*i)->mark_for_remove (); - delete (*i); } return 0; @@ -303,7 +303,7 @@ Editor::write_audio_selection (TimeSelection& ts) bool Editor::write_audio_range (AudioPlaylist& playlist, uint32_t channels, list<AudioRange>& range) { - AudioFileSource* fs; + boost::shared_ptr<AudioFileSource> fs; const jack_nframes_t chunk_size = 4096; jack_nframes_t nframes; Sample buf[chunk_size]; @@ -312,7 +312,7 @@ Editor::write_audio_range (AudioPlaylist& playlist, uint32_t channels, list<Audi char s[PATH_MAX+1]; uint32_t cnt; string path; - vector<AudioFileSource *> sources; + vector<boost::shared_ptr<AudioFileSource> > sources; for (uint32_t n=0; n < channels; ++n) { @@ -339,7 +339,7 @@ Editor::write_audio_range (AudioPlaylist& playlist, uint32_t channels, list<Audi path = s; try { - fs = AudioFileSource::create (path); + fs = boost::dynamic_pointer_cast<AudioFileSource> (SourceFactory::createReadable (path, AudioFileSource::Flag (0))); } catch (failed_constructor& err) { @@ -422,9 +422,8 @@ Editor::write_audio_range (AudioPlaylist& playlist, uint32_t channels, list<Audi error_out: /* unref created files */ - for (vector<AudioFileSource*>::iterator i = sources.begin(); i != sources.end(); ++i) { + for (vector<boost::shared_ptr<AudioFileSource> >::iterator i = sources.begin(); i != sources.end(); ++i) { (*i)->mark_for_remove (); - delete *i; } return false; diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc index 09a56e9af5..a84e53c749 100644 --- a/gtk2_ardour/editor_region_list.cc +++ b/gtk2_ardour/editor_region_list.cc @@ -120,11 +120,11 @@ Editor::add_audio_region_to_region_display (boost::shared_ptr<AudioRegion> regio set_color(c, rgba_from_style ("RegionListWholeFile", 0xff, 0, 0, 0, "fg", Gtk::STATE_NORMAL, false )); row[region_list_columns.color_] = c; - if (region->source().name()[0] == '/') { // external file + if (region->source()->name()[0] == '/') { // external file if (region->whole_file()) { str = ".../"; - str += PBD::basename_nosuffix (region->source().name()); + str += PBD::basename_nosuffix (region->source()->name()); } else { str = region->name(); @@ -467,7 +467,7 @@ Editor::region_list_sorter (TreeModel::iterator a, TreeModel::iterator b) break; case ByTimestamp: - cmp = region1->source().timestamp() - region2->source().timestamp(); + cmp = region1->source()->timestamp() - region2->source()->timestamp(); break; case ByStartInFile: @@ -479,22 +479,22 @@ Editor::region_list_sorter (TreeModel::iterator a, TreeModel::iterator b) break; case BySourceFileName: - cmp = strcasecmp (region1->source().name().c_str(), region2->source().name().c_str()); + cmp = strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str()); break; case BySourceFileLength: - cmp = region1->source().length() - region2->source().length(); + cmp = region1->source()->length() - region2->source()->length(); break; case BySourceFileCreationDate: - cmp = region1->source().timestamp() - region2->source().timestamp(); + cmp = region1->source()->timestamp() - region2->source()->timestamp(); break; case BySourceFileFS: - if (region1->source().name() == region2->source().name()) { + if (region1->source()->name() == region2->source()->name()) { cmp = strcasecmp (region1->name().c_str(), region2->name().c_str()); } else { - cmp = strcasecmp (region1->source().name().c_str(), region2->source().name().c_str()); + cmp = strcasecmp (region1->source()->name().c_str(), region2->source()->name().c_str()); } break; } diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index 34dcf56ec3..cfede6d863 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -33,6 +33,7 @@ #include <ardour/audioregion.h> #include <ardour/audiofilesource.h> #include <ardour/region_factory.h> +#include <ardour/source_factory.h> #include "ardour_ui.h" #include "gui_thread.h" @@ -192,11 +193,11 @@ SoundFileBox::play_btn_clicked () if (region_cache.find (path) == region_cache.end()) { SourceList srclist; - AudioFileSource* afs; - + boost::shared_ptr<AudioFileSource> afs; + for (int n = 0; n < sf_info.channels; ++n) { try { - afs = AudioFileSource::create (path+":"+string_compose("%1", n)); + afs = boost::dynamic_pointer_cast<AudioFileSource> (SourceFactory::createReadable (path+":"+string_compose("%1", n), AudioFileSource::Flag (0))); srclist.push_back(afs); } catch (failed_constructor& err) { diff --git a/gtk2_ardour/tape_region_view.cc b/gtk2_ardour/tape_region_view.cc index e71429ed3a..0cf50b87e6 100644 --- a/gtk2_ardour/tape_region_view.cc +++ b/gtk2_ardour/tape_region_view.cc @@ -68,7 +68,7 @@ TapeAudioRegionView::init (Gdk::Color& basic_color, bool wfw) /* every time the wave data changes and peaks are ready, redraw */ for (uint32_t n = 0; n < audio_region()->n_channels(); ++n) { - audio_region()->source(n).PeaksReady.connect (bind (mem_fun(*this, &TapeAudioRegionView::update), n)); + audio_region()->source(n)->PeaksReady.connect (bind (mem_fun(*this, &TapeAudioRegionView::update), n)); } } |