You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
+
*/
#include <set>
max_yval = other.max_yval;
max_xval = other.max_xval;
default_value = other.default_value;
-
+
+ rt_insertion_point = events.end();
+ lookup_cache.range.first = events.end();
+
mark_dirty ();
maybe_signal_changed ();
}
if (!done) {
last_rt_insertion_point = events.insert (where, point_factory (when, value));
+ // cerr << "\tINSERTED\n";
}
_new_touch = false;
{
Glib::Mutex::Lock lm (lock);
ControlEvent cp (last_coordinate, 0);
- list<ControlEvent*>::reverse_iterator i;
+ AutomationList::reverse_iterator i;
double last_val;
if (events.empty()) {
uint32_t sz = events.size();
while (i != events.rend() && sz > 2) {
- list<ControlEvent*>::reverse_iterator tmp;
+ AutomationList::reverse_iterator tmp;
tmp = i;
++tmp;
i = events.begin();
while (i != events.end() && !events.empty()) {
- list<ControlEvent*>::iterator tmp;
+ AutomationList::iterator tmp;
tmp = i;
++tmp;
return multipoint_eval (x);
break;
}
+
+ /*NOTREACHED*/ /* stupid gcc */
+ return 0.0;
}
double
{
XMLNode* node = new XMLNode (X_("events"));
stringstream str;
+
+ str.precision(15); //10 digits is enough digits for 24 hours at 96kHz
for (iterator xx = events.begin(); xx != events.end(); ++xx) {
str << (double) (*xx)->when;
return 0;
}
+void
+AutomationList::shift (nframes64_t pos, nframes64_t frames)
+{
+ {
+ Glib::Mutex::Lock lm (lock);
+
+ for (iterator i = begin (); i != end (); ++i) {
+ if ((*i)->when >= pos) {
+ (*i)->when += frames;
+ }
+ }
+
+ mark_dirty ();
+ }
+
+ maybe_signal_changed ();
+}