summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-09-19 14:38:46 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-09-19 14:38:46 +0000
commit6f8cd634501efd70711b148b4ac0e0ce2aa5cc95 (patch)
tree07df4b771792ec9a0b8ba7c8c01db0234f1efe22 /libs
parent60f588f21d6ad62335d72e8dc682abf8859107ea (diff)
chris goddard's region list patch; port 2.X marker drag/move changes to 3.0; compilation fixes-post-evoral
git-svn-id: svn://localhost/ardour2/branches/3.0@3760 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/automation_control.h4
-rw-r--r--libs/ardour/ardour/location.h19
-rw-r--r--libs/ardour/ardour/region.h1
-rw-r--r--libs/ardour/audioanalyser.cc2
-rw-r--r--libs/ardour/location.cc13
-rw-r--r--libs/ardour/region.cc16
-rw-r--r--libs/ardour/utils.cc1
-rw-r--r--libs/evoral/SConscript2
-rw-r--r--libs/evoral/evoral/ControlList.hpp6
-rw-r--r--libs/evoral/evoral/EventSink.hpp1
-rw-r--r--libs/evoral/evoral/Parameter.hpp4
-rw-r--r--libs/evoral/src/Sequence.cpp3
-rw-r--r--libs/surfaces/generic_midi/SConscript1
-rw-r--r--libs/surfaces/mackie/SConscript1
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc2
-rw-r--r--libs/surfaces/mackie/route_signal.cc2
-rw-r--r--libs/surfaces/powermate/SConscript1
-rw-r--r--libs/surfaces/tranzport/SConscript1
18 files changed, 62 insertions, 18 deletions
diff --git a/libs/ardour/ardour/automation_control.h b/libs/ardour/ardour/automation_control.h
index 24d1db3eec..78f4553d87 100644
--- a/libs/ardour/ardour/automation_control.h
+++ b/libs/ardour/ardour/automation_control.h
@@ -43,7 +43,7 @@ public:
boost::shared_ptr<ARDOUR::AutomationList>,
std::string name="unnamed controllable");
- boost::shared_ptr<AutomationList> alist() { return boost::dynamic_pointer_cast<AutomationList>(_list); }
+ boost::shared_ptr<AutomationList> alist() const { return boost::dynamic_pointer_cast<AutomationList>(_list); }
void set_list(boost::shared_ptr<Evoral::ControlList>);
@@ -55,7 +55,7 @@ public:
return ((ARDOUR::AutomationList*)_list.get())->automation_write();
}
- inline AutoState automation_state() {
+ inline AutoState automation_state() const {
return ((ARDOUR::AutomationList*)_list.get())->automation_state();
}
diff --git a/libs/ardour/ardour/location.h b/libs/ardour/ardour/location.h
index 53d9489823..d5b672a89d 100644
--- a/libs/ardour/ardour/location.h
+++ b/libs/ardour/ardour/location.h
@@ -100,14 +100,15 @@ class Location : public PBD::StatefulDestructible
void set_is_end (bool yn, void* src);
void set_is_start (bool yn, void* src);
- bool is_auto_punch () { return _flags & IsAutoPunch; }
- bool is_auto_loop () { return _flags & IsAutoLoop; }
- bool is_mark () { return _flags & IsMark; }
- bool is_hidden () { return _flags & IsHidden; }
- bool is_cd_marker () { return _flags & IsCDMarker; }
- bool is_end() { return _flags & IsEnd; }
- bool is_start() { return _flags & IsStart; }
- bool is_range_marker() { return _flags & IsRangeMarker; }
+ bool is_auto_punch () const { return _flags & IsAutoPunch; }
+ bool is_auto_loop () const { return _flags & IsAutoLoop; }
+ bool is_mark () const { return _flags & IsMark; }
+ bool is_hidden () const { return _flags & IsHidden; }
+ bool is_cd_marker () const { return _flags & IsCDMarker; }
+ bool is_end() const { return _flags & IsEnd; }
+ bool is_start() const { return _flags & IsStart; }
+ bool is_range_marker() const { return _flags & IsRangeMarker; }
+ bool matches (Flags f) const { return _flags & f; }
sigc::signal<void,Location*> name_changed;
sigc::signal<void,Location*> end_changed;
@@ -175,6 +176,8 @@ class Locations : public PBD::StatefulDestructible
nframes_t first_mark_before (nframes_t, bool include_special_ranges = false);
nframes_t first_mark_after (nframes_t, bool include_special_ranges = false);
+ void find_all_between (nframes64_t start, nframes64_t, LocationList&, Location::Flags);
+
sigc::signal<void,Location*> current_changed;
sigc::signal<void> changed;
sigc::signal<void,Location*> added;
diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h
index 32f47d42d7..dc81de6374 100644
--- a/libs/ardour/ardour/region.h
+++ b/libs/ardour/ardour/region.h
@@ -90,6 +90,7 @@ class Region : public Automatable, public boost::enable_shared_from_this<Region>
static Change HiddenChanged;
sigc::signal<void,Change> StateChanged;
+ static sigc::signal<void,boost::shared_ptr<ARDOUR::Region> > RegionPropertyChanged;
virtual ~Region();
diff --git a/libs/ardour/audioanalyser.cc b/libs/ardour/audioanalyser.cc
index 98c4206301..ab3691d8d1 100644
--- a/libs/ardour/audioanalyser.cc
+++ b/libs/ardour/audioanalyser.cc
@@ -10,6 +10,8 @@
#include <ardour/readable.h>
#include <ardour/readable.h>
+#include <cstring>
+
#include "i18n.h"
using namespace std;
diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc
index 3654e03a9d..8dd4bbc636 100644
--- a/libs/ardour/location.cc
+++ b/libs/ardour/location.cc
@@ -924,3 +924,16 @@ Locations::get_location_by_id(PBD::ID id)
return 0;
}
+
+void
+Locations::find_all_between (nframes64_t start, nframes64_t end, LocationList& ll, Location::Flags flags)
+{
+ Glib::Mutex::Lock lm (lock);
+
+ for (LocationList::const_iterator i = locations.begin(); i != locations.end(); ++i) {
+ if ((flags == 0 || (*i)->matches (flags)) &&
+ ((*i)->start() >= start && (*i)->end() < end)) {
+ ll.push_back (*i);
+ }
+ }
+}
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc
index 42564a8b5e..25435024b3 100644
--- a/libs/ardour/region.cc
+++ b/libs/ardour/region.cc
@@ -53,6 +53,7 @@ Change Region::LockChanged = ARDOUR::new_change ();
Change Region::LayerChanged = ARDOUR::new_change ();
Change Region::HiddenChanged = ARDOUR::new_change ();
+sigc::signal<void,boost::shared_ptr<ARDOUR::Region> > Region::RegionPropertyChanged;
/* derived-from-derived constructor (no sources in constructor) */
Region::Region (Session& s, nframes_t start, nframes_t length, const string& name, DataType type, layer_t layer, Region::Flag flags)
@@ -1350,6 +1351,21 @@ Region::send_change (Change what_changed)
}
StateChanged (what_changed);
+
+ if (!(_flags & DoNotSaveState)) {
+
+ /* Try and send a shared_pointer unless this is part of the constructor.
+ If so, do nothing.
+ */
+
+ try {
+ boost::shared_ptr<Region> rptr = shared_from_this();
+ RegionPropertyChanged (rptr);
+ } catch (...) {
+ /* no shared_ptr available, relax; */
+ }
+ }
+
}
void
diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc
index 1906d92b88..c598a3d279 100644
--- a/libs/ardour/utils.cc
+++ b/libs/ardour/utils.cc
@@ -24,7 +24,6 @@
#include <cstring>
#include <cmath>
#include <cctype>
-#include <string>
#include <cstring>
#include <cerrno>
#include <iostream>
diff --git a/libs/evoral/SConscript b/libs/evoral/SConscript
index fcc29c9b56..6141f10e4f 100644
--- a/libs/evoral/SConscript
+++ b/libs/evoral/SConscript
@@ -8,6 +8,8 @@ Import('env libraries install_prefix')
evoral = env.Clone()
evoral.Merge([
+ libraries['glib2'],
+ libraries['sigc2'],
libraries['glibmm2'],
libraries['xml'],
libraries['pbd'],
diff --git a/libs/evoral/evoral/ControlList.hpp b/libs/evoral/evoral/ControlList.hpp
index 45519955c5..bc994d90c8 100644
--- a/libs/evoral/evoral/ControlList.hpp
+++ b/libs/evoral/evoral/ControlList.hpp
@@ -47,9 +47,9 @@ struct ControlEvent {
}
}
- ~ControlEvent() { if (coeff) delete[] coeff; }
+ ~ControlEvent() { if (coeff) delete[] coeff; }
- void create_coeffs() {
+ void create_coeffs() {
if (!coeff)
coeff = new double[4];
@@ -85,7 +85,7 @@ public:
ControlList (const Parameter& id);
//ControlList (const XMLNode&, Parameter id);
- ~ControlList();
+ virtual ~ControlList();
virtual boost::shared_ptr<ControlList> create(Parameter id);
diff --git a/libs/evoral/evoral/EventSink.hpp b/libs/evoral/evoral/EventSink.hpp
index fde6399f2e..67b33d6965 100644
--- a/libs/evoral/evoral/EventSink.hpp
+++ b/libs/evoral/evoral/EventSink.hpp
@@ -28,6 +28,7 @@ namespace Evoral {
*/
class EventSink {
public:
+ virtual ~EventSink() {}
virtual size_t write(timestamp_t time,
uint32_t size,
const uint8_t* buf) = 0;
diff --git a/libs/evoral/evoral/Parameter.hpp b/libs/evoral/evoral/Parameter.hpp
index 301a432bd0..a88483aec4 100644
--- a/libs/evoral/evoral/Parameter.hpp
+++ b/libs/evoral/evoral/Parameter.hpp
@@ -43,7 +43,7 @@ public:
Parameter(uint32_t type, uint8_t channel, uint32_t id=0)
: _type(type), _id(id), _channel(channel)
{}
-
+
Parameter(const std::string& str) {
int channel;
if (sscanf(str.c_str(), "%d_c%d_n%d", &_type, &channel, &_id) == 3) {
@@ -56,6 +56,8 @@ public:
std::cerr << "WARNING: Unable to create parameter from string: " << str << std::endl;
}
+ virtual ~Parameter() {}
+
inline uint32_t type() const { return _type; }
inline uint32_t id() const { return _id; }
inline uint8_t channel() const { return _channel; }
diff --git a/libs/evoral/src/Sequence.cpp b/libs/evoral/src/Sequence.cpp
index 4880b5a04d..fecc37be29 100644
--- a/libs/evoral/src/Sequence.cpp
+++ b/libs/evoral/src/Sequence.cpp
@@ -19,6 +19,7 @@
#define __STDC_LIMIT_MACROS 1
#include <iostream>
+#include <cmath>
#include <algorithm>
#include <stdexcept>
#include <stdint.h>
@@ -313,7 +314,7 @@ size_t Sequence::read(EventSink& dst, timestamp_t start, timestamp_t nframes, ti
//cerr << "Using cached iterator at " << _next_read << endl;
}
- _next_read = start + nframes;
+ _next_read = (nframes_t) floor (start + nframes);
while (_read_iter != end() && _read_iter->time() < start + nframes) {
assert(_read_iter->size() > 0);
diff --git a/libs/surfaces/generic_midi/SConscript b/libs/surfaces/generic_midi/SConscript
index e3e62e7402..d4c9e92214 100644
--- a/libs/surfaces/generic_midi/SConscript
+++ b/libs/surfaces/generic_midi/SConscript
@@ -33,6 +33,7 @@ genericmidi.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
genericmidi.Append(CPPPATH = libraries['jack'].get('CPPPATH', []))
genericmidi.Merge ([
+ libraries['evoral'],
libraries['ardour'],
libraries['ardour_cp'],
libraries['sndfile'],
diff --git a/libs/surfaces/mackie/SConscript b/libs/surfaces/mackie/SConscript
index 143ebc9856..c19d145c73 100644
--- a/libs/surfaces/mackie/SConscript
+++ b/libs/surfaces/mackie/SConscript
@@ -47,6 +47,7 @@ mackie.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
mackie.Append(CPPPATH = libraries['jack'].get('CPPPATH', []))
mackie.Merge ([
+ libraries['evoral'],
libraries['ardour'],
libraries['ardour_cp'],
libraries['sigc2'],
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index 5ef28d4549..4558dc641c 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -1019,7 +1019,7 @@ void MackieControlProtocol::notify_panner_changed( RouteSignal * route_signal )
// TODO handle plugin automation polling
void MackieControlProtocol::update_automation( RouteSignal & rs )
{
- ARDOUR::AutoState gain_state = rs.route().gain_control()->list()->automation_state();
+ ARDOUR::AutoState gain_state = rs.route().gain_control()->alist()->automation_state();
if ( gain_state == Touch || gain_state == Play )
{
notify_gain_changed( &rs );
diff --git a/libs/surfaces/mackie/route_signal.cc b/libs/surfaces/mackie/route_signal.cc
index b01b5e0cf5..adaeadd805 100644
--- a/libs/surfaces/mackie/route_signal.cc
+++ b/libs/surfaces/mackie/route_signal.cc
@@ -37,7 +37,7 @@ void RouteSignal::connect()
_mute_changed_connection = _route.mute_control()->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_mute_changed ), this ) );
if ( _strip.has_gain() )
- _gain_changed_connection = _route.control(ARDOUR::GainAutomation)->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_gain_changed ), this ) );
+ _gain_changed_connection = _route.gain_control()->Changed.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_gain_changed ), this ) );
_name_changed_connection = _route.NameChanged.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_name_changed ), this ) );
diff --git a/libs/surfaces/powermate/SConscript b/libs/surfaces/powermate/SConscript
index c1a79fe955..3e01e2042b 100644
--- a/libs/surfaces/powermate/SConscript
+++ b/libs/surfaces/powermate/SConscript
@@ -31,6 +31,7 @@ powermate.Append(CXXFLAGS="-DCONFIG_DIR=\\\""+final_config_prefix+"\\\"")
powermate.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
powermate.Merge ([
+ libraries['evoral'],
libraries['ardour'],
libraries['ardour_cp'],
libraries['sigc2'],
diff --git a/libs/surfaces/tranzport/SConscript b/libs/surfaces/tranzport/SConscript
index ff48eb64e3..31630fb2e0 100644
--- a/libs/surfaces/tranzport/SConscript
+++ b/libs/surfaces/tranzport/SConscript
@@ -55,6 +55,7 @@ tranzport.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
tranzport.Append(CPPPATH = libraries['jack'].get('CPPPATH', []))
tranzport.Merge ([
+ libraries['evoral'],
libraries['ardour'],
libraries['ardour_cp'],
libraries['sigc2'],