Merge remote-tracking branch 'remotes/origin/exportvis' into windows+cc
[ardour.git] / libs / canvas / image.cc
index b13859aeda270882ab4adfc17e6eee9b2e0f4d94..32e453dc30e70b3a19bd271dece3ff2e9d8e28b2 100644 (file)
@@ -43,10 +43,13 @@ 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);
 
-       if (_surface) {
-               context->set_source (_surface, 0, 0);
-               context->rectangle (area.x0, area.y0, area.width(), area.height());
+       if (_surface && draw) {
+               context->set_source (_surface, self.x0, self.y0);
+               context->rectangle (draw->x0, draw->y0, draw->width(), draw->height());
                context->fill ();
        }
 }