fix mix group problems caused by recursive loop when modifying gain/gui
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 21 Apr 2008 13:44:33 +0000 (13:44 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 21 Apr 2008 13:44:33 +0000 (13:44 +0000)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3275 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/route_time_axis.cc
gtk2_ardour/route_time_axis.h

index e232dbbd7ba64f2c64b5cf13b7a23b0a2f4df378..49881d119aee82f8273d3261f6a0e4a8c7c96c9d 100644 (file)
@@ -106,7 +106,8 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh
          visual_button (_("v")),
          lm (rt, sess),
          gain_slider (0),
-         gain_adjustment (0.781787, 0.0, 1.0, 0.01, 0.1)
+         gain_adjustment (0.781787, 0.0, 1.0, 0.01, 0.1),
+         ignore_gain_adjustment (false)
 {
        if (slider == 0) {
                setup_slider_pix ();
@@ -1911,6 +1912,10 @@ RouteTimeAxisView::end_gain_touch (GdkEventButton* ev)
 void
 RouteTimeAxisView::gain_adjusted ()
 {
+       if (ignore_gain_adjustment) {
+               return;
+       }
+
        _route->set_gain (slider_position_to_gain (gain_adjustment.get_value()), this);
 }
 
@@ -1924,5 +1929,7 @@ void
 RouteTimeAxisView::effective_gain_display ()
 {
        gfloat value = gain_to_slider_position (_route->effective_gain());
+       ignore_gain_adjustment = true;
        gain_adjustment.set_value (value);
+       ignore_gain_adjustment = false;
 }
index 211ab8c2ced80776318cb4776039a7ff67fe528d..38ef1c3c5b1aa2fbc20074c64fb0c9dcaf8c89ef 100644 (file)
@@ -261,6 +261,7 @@ protected:
 
        Gtkmm2ext::HSliderController *gain_slider;
        Gtk::Adjustment              gain_adjustment;
+       bool                         ignore_gain_adjustment;
        static Glib::RefPtr<Gdk::Pixbuf> slider;
        static int setup_slider_pix ();
        void gain_adjusted();