summaryrefslogtreecommitdiff
path: root/gtk2_ardour/sfdb_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-08-25 01:07:15 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-08-25 01:07:15 +0000
commitce234f363e95c38fc92728e520bf5ba240a89aa7 (patch)
tree96ce8c4734bdd564ec1f2ad0c36bc32f0b108204 /gtk2_ardour/sfdb_ui.cc
parent7e95f29ce95edf01d6d451f96fae03f3d3451ff8 (diff)
use shared_ptr<> for all region handling
git-svn-id: svn://localhost/ardour2/trunk@852 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/sfdb_ui.cc')
-rw-r--r--gtk2_ardour/sfdb_ui.cc17
1 files changed, 10 insertions, 7 deletions
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index d9ded04d2b..34dcf56ec3 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -32,6 +32,7 @@
#include <ardour/audio_library.h>
#include <ardour/audioregion.h>
#include <ardour/audiofilesource.h>
+#include <ardour/region_factory.h>
#include "ardour_ui.h"
#include "gui_thread.h"
@@ -187,10 +188,10 @@ SoundFileBox::play_btn_clicked ()
return;
}
- static std::map<string, AudioRegion*> region_cache;
+ static std::map<string, boost::shared_ptr<AudioRegion> > region_cache;
if (region_cache.find (path) == region_cache.end()) {
- AudioRegion::SourceList srclist;
+ SourceList srclist;
AudioFileSource* afs;
for (int n = 0; n < sf_info.channels; ++n) {
@@ -208,16 +209,18 @@ SoundFileBox::play_btn_clicked ()
return;
}
- string result;
- _session->region_name (result, Glib::path_get_basename(srclist[0]->name()), false);
- AudioRegion* a_region = new AudioRegion(srclist, 0, srclist[0]->length(), result, 0, Region::DefaultFlags, false);
- region_cache[path] = a_region;
+ pair<string,boost::shared_ptr<AudioRegion> > newpair;
+
+ _session->region_name (newpair.first, Glib::path_get_basename(srclist[0]->name()), false);
+ newpair.second = boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (srclist, 0, srclist[0]->length(), newpair.first, 0, Region::DefaultFlags, false));
+
+ region_cache.insert (newpair);
}
play_btn.hide();
stop_btn.show();
- _session->audition_region(*region_cache[path]);
+ _session->audition_region(region_cache[path]);
}
void