mutable ARDOUR::framepos_t _sample_end;
mutable Cairo::RefPtr<Cairo::ImageSurface> _image;
- PBD::ScopedConnection invalidation_connection;
+ PBD::ScopedConnectionList invalidation_connection;
static double _global_gradient_depth;
static bool _global_logscaled;
static PBD::Signal0<void> VisualPropertiesChanged;
void handle_visual_property_change ();
+ void handle_clip_level_change ();
void ensure_cache (ARDOUR::framepos_t sample_start, ARDOUR::framepos_t sample_end) const;
ArdourCanvas::Coord position (double) const;
, _sample_end (-1)
{
VisualPropertiesChanged.connect_same_thread (invalidation_connection, boost::bind (&WaveView::handle_visual_property_change, this));
+ ClipLevelChanged.connect_same_thread (invalidation_connection, boost::bind (&WaveView::handle_clip_level_change, this));
}
WaveView::~WaveView ()
}
}
+void
+WaveView::handle_clip_level_change ()
+{
+ invalidate_image ();
+}
+
void
WaveView::set_fill_color (Color c)
{
void
WaveView::set_clip_level (double dB)
{
- _clip_level = dB_to_coefficient (dB);
- ClipLevelChanged ();
+ const double clip_level = dB_to_coefficient (dB);
+ if (clip_level != _clip_level) {
+ _clip_level = clip_level;
+ ClipLevelChanged ();
+ }
}
struct LineTips {