remove debug output and get logic correct to cause first render to always use the...
[ardour.git] / libs / canvas / outline.cc
index 5da6e3d0806df6e2ed80871ab1214a742d29911a..9416859e59b0a8ef9269c042b211076f01731884 100644 (file)
 #include "pbd/convert.h"
 
 #include "ardour/utils.h"
+
+#include "canvas/item.h"
 #include "canvas/outline.h"
 #include "canvas/utils.h"
 #include "canvas/debug.h"
 
 using namespace ArdourCanvas;
 
-Outline::Outline (Group* parent)
-       : Item (parent)
+Outline::Outline (Item& self)
+       : _self (self)
        , _outline_color (0x000000ff)
-       , _outline_width (0.5)
+       , _outline_width (1.0)
        , _outline (true)
 {
-
 }
 
 void
 Outline::set_outline_color (Color color)
 {
-       begin_change ();
-       
-       _outline_color = color;
-
-       end_change ();
+       if (color != _outline_color) {
+               _self.begin_visual_change ();
+               _outline_color = color;
+               _self.end_visual_change ();
+       }
 }
 
 void
 Outline::set_outline_width (Distance width)
 {
-       begin_change ();
-       
-       _outline_width = width;
-
-       _bounding_box_dirty = true;
-       end_change ();
-
-       DEBUG_TRACE (PBD::DEBUG::CanvasItemsDirtied, "canvas item dirty: outline width change\n");      
+       if (width != _outline_width) {
+               _self.begin_change ();
+               _outline_width = width;
+               _self._bounding_box_dirty = true;
+               _self.end_change ();
+       }
 }
 
 void
 Outline::set_outline (bool outline)
 {
-       begin_change ();
-
-       _outline = outline;
-
-       _bounding_box_dirty = true;
-       end_change ();
+       if (outline != _outline) {
+               _self.begin_change ();
+               _outline = outline;
+               _self._bounding_box_dirty = true;
+               _self.end_change ();
+       }
 }
 
 void