fix crash when copy'ing latent plugins
[ardour.git] / libs / canvas / image.cc
index 32e453dc30e70b3a19bd271dece3ff2e9d8e28b2..b42c7053a88267e586c445ca6dbc62ef73a4b2d6 100644 (file)
@@ -22,8 +22,8 @@
 
 using namespace ArdourCanvas;
 
-Image::Image (Group* group, Cairo::Format fmt, int width, int height)
-       : Item (group)
+Image::Image (Canvas* canvas, Cairo::Format fmt, int width, int height)
+       : Item (canvas)
        , _format (fmt)
        , _width (width)
        , _height (height)
@@ -32,7 +32,17 @@ Image::Image (Group* group, Cairo::Format fmt, int width, int height)
        DataReady.connect (data_connections, MISSING_INVALIDATOR, boost::bind (&Image::accept_data, this), gui_context());
 }
 
-void 
+Image::Image (Item* parent, Cairo::Format fmt, int width, int height)
+       : Item (parent)
+       , _format (fmt)
+       , _width (width)
+       , _height (height)
+       , _need_render (false)
+{
+       DataReady.connect (data_connections, MISSING_INVALIDATOR, boost::bind (&Image::accept_data, this), gui_context());
+}
+
+void
 Image::render (Rect const& area, Cairo::RefPtr<Cairo::Context> context) const
 {
        if (_need_render && _pending) {
@@ -43,7 +53,7 @@ Image::render (Rect const& area, Cairo::RefPtr<Cairo::Context> context) const
                                                        _pending->stride);
                _current = _pending;
        }
-       
+
        Rect self = item_to_window (Rect (0, 0, _width, _height));
        boost::optional<Rect> draw = self.intersection (area);
 
@@ -86,12 +96,12 @@ Image::put_image (boost::shared_ptr<Data> d)
 }
 
 void
-Image::accept_data () 
+Image::accept_data ()
 {
        /* must be executed in gui thread */
 
        begin_change ();
        _need_render = true;
        end_change (); // notify canvas that we need redrawing
-}           
+}