Catch exception thrown by SMF code when it cannot write
[ardour.git] / libs / evoral / src / Note.cpp
index ead5d1eff572947a2fbd516682ebae27e7a44a00..01820b70e7210526b6642fe4a719a72b41f65004 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of Evoral.
- * Copyright (C) 2008 Dave Robillard <http://drobilla.net>
+ * Copyright (C) 2008 David Robillard <http://drobilla.net>
  * Copyright (C) 2000-2008 Paul Davis
  *
  * Evoral is free software; you can redistribute it and/or modify it under the
@@ -18,6 +18,7 @@
 
 #include <iostream>
 #include <limits>
+#include <glib.h>
 #include "evoral/Note.hpp"
 
 namespace Evoral {
@@ -25,8 +26,8 @@ namespace Evoral {
 template<typename Time>
 Note<Time>::Note(uint8_t chan, Time t, Time l, uint8_t n, uint8_t v)
        // FIXME: types?
-       : _on_event(0xDE, t, 3, NULL, true)
-       , _off_event(0xAD, t + l, 3, NULL, true)
+       : _on_event (0xDE, t, 3, NULL, true)
+       , _off_event (0xAD, t + l, 3, NULL, true)
 {
        assert(chan < 16);
 
@@ -52,16 +53,18 @@ Note<Time>::Note(const Note<Time>& copy)
        : _on_event(copy._on_event, true)
        , _off_event(copy._off_event, true)
 {
+       set_id (copy.id());
+
        assert(_on_event.buffer());
        assert(_off_event.buffer());
        /*
-       assert(copy._on_event.size == 3);
-       _on_event.buffer = _on_event_buffer;
-       memcpy(_on_event_buffer, copy._on_event_buffer, 3);
+         assert(copy._on_event.size == 3);
+         _on_event.buffer = _on_event_buffer;
+         memcpy(_on_event_buffer, copy._on_event_buffer, 3);
 
-       assert(copy._off_event.size == 3);
-       _off_event.buffer = _off_event_buffer;
-       memcpy(_off_event_buffer, copy._off_event_buffer, 3);
+         assert(copy._off_event.size == 3);
+         _off_event.buffer = _off_event_buffer;
+         memcpy(_off_event_buffer, copy._off_event_buffer, 3);
        */
 
        assert(time() == copy.time());
@@ -78,6 +81,13 @@ Note<Time>::~Note()
 {
 }
 
+template<typename Time> void
+Note<Time>::set_id (event_id_t id)
+{
+       _on_event.set_id (id);
+       _off_event.set_id (id);
+}
+
 template<typename Time>
 const Note<Time>&
 Note<Time>::operator=(const Note<Time>& other)