diff options
author | Carl Hetherington <carl@carlh.net> | 2010-09-20 00:58:25 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-09-20 00:58:25 +0000 |
commit | a2885a430bbb69a72f901d227cacce979f121020 (patch) | |
tree | 191ae276dbbd2e456a0d8edabccd19fee486572c /libs | |
parent | a212e7eec999e696dde6d4747b783fb6098bdb47 (diff) |
Add progress bar to strip silence dialogue. Fixes #3103.
git-svn-id: svn://localhost/ardour2/branches/3.0@7809 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/filter.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_stretch.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/rb_effect.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/region.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/reverse.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/strip_silence.h | 2 | ||||
-rw-r--r-- | libs/ardour/midi_stretch.cc | 2 | ||||
-rw-r--r-- | libs/ardour/rb_effect.cc | 2 | ||||
-rw-r--r-- | libs/ardour/region.cc | 4 | ||||
-rw-r--r-- | libs/ardour/reverse.cc | 2 | ||||
-rw-r--r-- | libs/ardour/strip_silence.cc | 11 | ||||
-rw-r--r-- | libs/ardour/wscript | 1 |
12 files changed, 24 insertions, 12 deletions
diff --git a/libs/ardour/ardour/filter.h b/libs/ardour/ardour/filter.h index 697e19539e..9d69a513ac 100644 --- a/libs/ardour/ardour/filter.h +++ b/libs/ardour/ardour/filter.h @@ -28,13 +28,14 @@ namespace ARDOUR { class Region; class Session; +class Progress; class Filter { public: virtual ~Filter() {} - virtual int run (boost::shared_ptr<ARDOUR::Region>) = 0; + virtual int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0) = 0; std::vector<boost::shared_ptr<ARDOUR::Region> > results; protected: diff --git a/libs/ardour/ardour/midi_stretch.h b/libs/ardour/ardour/midi_stretch.h index 9dbfbca2bd..90c75bbc18 100644 --- a/libs/ardour/ardour/midi_stretch.h +++ b/libs/ardour/ardour/midi_stretch.h @@ -29,7 +29,7 @@ class MidiStretch : public Filter { MidiStretch (ARDOUR::Session&, TimeFXRequest&); ~MidiStretch (); - int run (boost::shared_ptr<ARDOUR::Region>); + int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0); private: TimeFXRequest& _request; diff --git a/libs/ardour/ardour/rb_effect.h b/libs/ardour/ardour/rb_effect.h index e4b1c00034..84c9bce53c 100644 --- a/libs/ardour/ardour/rb_effect.h +++ b/libs/ardour/ardour/rb_effect.h @@ -31,7 +31,7 @@ class RBEffect : public Filter { RBEffect (ARDOUR::Session&, TimeFXRequest&); ~RBEffect (); - int run (boost::shared_ptr<ARDOUR::Region>); + int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0); private: TimeFXRequest& tsr; diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index b78699d906..0ae325d124 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -68,6 +68,7 @@ namespace Properties { class Playlist; class Filter; class ExportSpecification; +class Progress; enum RegionEditState { EditChangesNothing = 0, @@ -205,7 +206,7 @@ class Region void set_locked (bool yn); void set_position_locked (bool yn); - int apply (Filter&); + int apply (Filter &, Progress* progress = 0); virtual uint64_t read_data_count() const { return _read_data_count; } diff --git a/libs/ardour/ardour/reverse.h b/libs/ardour/ardour/reverse.h index 0831e8184b..edc72ce707 100644 --- a/libs/ardour/ardour/reverse.h +++ b/libs/ardour/ardour/reverse.h @@ -29,7 +29,7 @@ class Reverse : public Filter { Reverse (ARDOUR::Session&); ~Reverse (); - int run (boost::shared_ptr<ARDOUR::Region>); + int run (boost::shared_ptr<ARDOUR::Region>, Progress *); }; } /* namespace */ diff --git a/libs/ardour/ardour/strip_silence.h b/libs/ardour/ardour/strip_silence.h index 217f6b3d8a..e77aa7111c 100644 --- a/libs/ardour/ardour/strip_silence.h +++ b/libs/ardour/ardour/strip_silence.h @@ -27,7 +27,7 @@ class StripSilence : public Filter { public: StripSilence (Session &, double, nframes_t, nframes_t); - int run (boost::shared_ptr<ARDOUR::Region>); + int run (boost::shared_ptr<ARDOUR::Region>, Progress* progress = 0); private: double _threshold; ///< silence threshold, in dBFS diff --git a/libs/ardour/midi_stretch.cc b/libs/ardour/midi_stretch.cc index dedae6acb1..ee1ccc31ae 100644 --- a/libs/ardour/midi_stretch.cc +++ b/libs/ardour/midi_stretch.cc @@ -42,7 +42,7 @@ MidiStretch::~MidiStretch () } int -MidiStretch::run (boost::shared_ptr<Region> r) +MidiStretch::run (boost::shared_ptr<Region> r, Progress* progress) { SourceList nsrcs; char suffix[32]; diff --git a/libs/ardour/rb_effect.cc b/libs/ardour/rb_effect.cc index 60764c1220..32a2d056d6 100644 --- a/libs/ardour/rb_effect.cc +++ b/libs/ardour/rb_effect.cc @@ -60,7 +60,7 @@ RBEffect::~RBEffect () } int -RBEffect::run (boost::shared_ptr<Region> r) +RBEffect::run (boost::shared_ptr<Region> r, Progress* progress) { boost::shared_ptr<AudioRegion> region = boost::dynamic_pointer_cast<AudioRegion> (r); diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index 07d27faee9..98f48ab80a 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -1535,9 +1535,9 @@ Region::get_parent() const } int -Region::apply (Filter& filter) +Region::apply (Filter& filter, Progress* progress) { - return filter.run (shared_from_this()); + return filter.run (shared_from_this(), progress); } diff --git a/libs/ardour/reverse.cc b/libs/ardour/reverse.cc index 10fce58442..675ccb4c52 100644 --- a/libs/ardour/reverse.cc +++ b/libs/ardour/reverse.cc @@ -42,7 +42,7 @@ Reverse::~Reverse () } int -Reverse::run (boost::shared_ptr<Region> r) +Reverse::run (boost::shared_ptr<Region> r, Progress* progress) { SourceList nsrcs; SourceList::iterator si; diff --git a/libs/ardour/strip_silence.cc b/libs/ardour/strip_silence.cc index a7d7ab073f..a7308b06ab 100644 --- a/libs/ardour/strip_silence.cc +++ b/libs/ardour/strip_silence.cc @@ -24,6 +24,7 @@ #include "ardour/region_factory.h" #include "ardour/session.h" #include "ardour/dB.h" +#include "ardour/progress.h" using namespace ARDOUR; @@ -41,7 +42,7 @@ StripSilence::StripSilence (Session & s, double threshold, nframes_t minimum_len } int -StripSilence::run (boost::shared_ptr<Region> r) +StripSilence::run (boost::shared_ptr<Region> r, Progress* progress) { results.clear (); @@ -88,6 +89,9 @@ StripSilence::run (boost::shared_ptr<Region> r) in_silence = false; } + int n = 0; + int const N = silence.size (); + while (s != silence.end()) { framecnt_t interval_duration; @@ -119,6 +123,11 @@ StripSilence::run (boost::shared_ptr<Region> r) ++s; end = s->first; in_silence = !in_silence; + + if (progress) { + progress->set_progress (float (n) / N); + } + ++n; } return 0; diff --git a/libs/ardour/wscript b/libs/ardour/wscript index a7bc811999..a2c4898053 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -148,6 +148,7 @@ libardour_sources = [ 'port_set.cc', 'process_thread.cc', 'processor.cc', + 'progress.cc', 'quantize.cc', 'rc_configuration.cc', 'recent_sessions.cc', |