Make it easier to move the summary rectangle around when it is narrow or low in height.
[ardour.git] / libs / evoral / src / Event.cpp
index b64ab7347c99564f3f7d2b1e761f51a52ffd9eb7..b886d4b39e8daa7c496a96d5873cdb6fc1e3a7e0 100644 (file)
  * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <glib.h>
 #include "evoral/Event.hpp"
 
 namespace Evoral {
 
+static event_id_t _event_id_counter = 0;
+
+event_id_t
+event_id_counter()
+{
+        return g_atomic_int_get (&_event_id_counter); 
+}
+
+void 
+init_event_id_counter(event_id_t n) 
+{ 
+        g_atomic_int_set (&_event_id_counter, n); 
+}
+
+event_id_t
+next_event_id ()
+{
+        return g_atomic_int_exchange_and_add (&_event_id_counter, 1);
+}
+
 #ifdef EVORAL_EVENT_ALLOC
 
 template<typename Timestamp>
 Event<Timestamp>::Event(EventType type, Timestamp time, uint32_t size, uint8_t* buf, bool alloc)
-       : _type(type)
+        : _type(type)
        , _original_time(time)
        , _nominal_time(time)
        , _size(size)
        , _buf(buf)
        , _owns_buf(alloc)
+        , _id (-1)
 {
        if (alloc) {
                _buf = (uint8_t*)malloc(_size);
@@ -49,6 +71,7 @@ Event<Timestamp>::Event(const Event& copy, bool owns_buf)
        , _size(copy._size)
        , _buf(copy._buf)
        , _owns_buf(owns_buf)
+        , _id (copy.id())
 {
        if (owns_buf) {
                _buf = (uint8_t*)malloc(_size);