delegate port-connections to low priority thread.
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / fastmeter.h
index 6802481777c0819cf6d6319adc7df091db53cba8..dbb3296c4653fe30c0d0844d7f3bc980d3edc134 100644 (file)
 #include <boost/tuple/tuple.hpp>
 #include <boost/tuple/tuple_comparison.hpp>
 #include <cairomm/pattern.h>
-#include <gtkmm/drawingarea.h>
-#include <gdkmm/pixbuf.h>
+#include "gtkmm2ext/cairo_widget.h"
 
 #include "gtkmm2ext/visibility.h"
 
 namespace Gtkmm2ext {
 
-class LIBGTKMM2EXT_API FastMeter : public Gtk::DrawingArea {
+class LIBGTKMM2EXT_API FastMeter : public CairoWidget {
   public:
        enum Orientation {
                Horizontal,
@@ -53,6 +52,7 @@ class LIBGTKMM2EXT_API FastMeter : public Gtk::DrawingArea {
                        int styleflags = 3
                        );
        virtual ~FastMeter ();
+       static void flush_pattern_cache();
 
        void set (float level, float peak = -1);
        void clear ();
@@ -67,7 +67,7 @@ class LIBGTKMM2EXT_API FastMeter : public Gtk::DrawingArea {
        bool get_highlight () { return highlight; }
 
 protected:
-       bool on_expose_event (GdkEventExpose*);
+       void render (cairo_t *, cairo_rectangle_t*);
        void on_size_request (GtkRequisition*);
        void on_size_allocate (Gtk::Allocation&);
 private:
@@ -96,12 +96,12 @@ private:
        float current_user_level;
        bool highlight;
 
-       bool vertical_expose (GdkEventExpose*);
+       void vertical_expose (cairo_t*, cairo_rectangle_t*);
        void vertical_size_request (GtkRequisition*);
        void vertical_size_allocate (Gtk::Allocation&);
        void queue_vertical_redraw (const Glib::RefPtr<Gdk::Window>&, float);
 
-       bool horizontal_expose (GdkEventExpose*);
+       void horizontal_expose (cairo_t*, cairo_rectangle_t*);
        void horizontal_size_request (GtkRequisition*);
        void horizontal_size_allocate (Gtk::Allocation&);
        void queue_horizontal_redraw (const Glib::RefPtr<Gdk::Window>&, float);