Make port inserts work.
[ardour.git] / libs / ardour / ardour / click.h
index 8488df47a66a7cb6f64655bbb5ac89e206a509f5..5ee1d5019410ef2e6c99dce77e5d7f71a91a7742 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2004 Paul Davis 
+    Copyright (C) 2009 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 #ifndef __ardour_click_h__
 #define __ardour_click_h__
 
+#include <list>
+
+#include "pbd/pool.h"
+#include "ardour/types.h"
 #include "ardour/io.h"
 
 namespace ARDOUR {
 
+struct Click {
+    nframes_t start;
+    nframes_t duration;
+    nframes_t offset;
+    const Sample *data;
+
+    Click (nframes_t s, nframes_t d, const Sample *b) : start (s), duration (d), offset (0), data (b) {}
+    
+    void *operator new (size_t) {
+           return pool.alloc ();
+    };
+    
+    void operator delete(void *ptr, size_t /*size*/) {
+           pool.release (ptr);
+    }
+    
+private:
+    static Pool pool;
+};
+
+typedef std::list<Click*> Clicks;
+
 class ClickIO : public IO
 {
-public:
-       ClickIO (Session& s, const std::string& name) : IO (s, name) {}
+  public:
+       ClickIO (Session& s, const std::string& name) : IO (s, name, IO::Output) {}
        ~ClickIO() {}
-
-protected:
+       
+  protected:
        uint32_t pans_required () const { return 1; }
 };