Make speaker dialogue manage the session's Speakers. Make azimuth control work....
[ardour.git] / libs / ardour / speakers.cc
index 0120e56bfa4b356a6b19e8cdf8284d43df907a12..4bb843021c7ef2d9478c6f2e54ed3103e08af211 100644 (file)
@@ -35,11 +35,35 @@ Speaker::Speaker (int i, const AngularVector& position)
        move (position);
 }
 
+Speaker::Speaker (Speaker const & o)
+       : id (o.id)
+       , _coords (o._coords)
+       , _angles (o._angles)
+{
+       
+}
+
+Speaker &
+Speaker::operator= (Speaker const & o)
+{
+       if (&o == this) {
+               return *this;
+       }
+
+       id = o.id;
+       _coords = o._coords;
+       _angles = o._angles;
+
+       return *this;
+}
+
 void
 Speaker::move (const AngularVector& new_position)
 {
        _angles = new_position;
        _angles.cartesian (_coords);
+
+       PositionChanged (); /* EMIT SIGNAL */
 }
 
 Speakers::Speakers ()
@@ -100,12 +124,12 @@ Speakers::add_speaker (const AngularVector& position)
 void
 Speakers::remove_speaker (int id)
 {
-       for (vector<Speaker>::iterator i = _speakers.begin(); i != _speakers.end(); ) {
-               if ((*i).id == id) {
+       for (vector<Speaker>::iterator i = _speakers.begin(); i != _speakers.end(); ++i) {
+               if (i->id == id) {
                        i = _speakers.erase (i);
                        update ();
                        break;
-               } 
+               }
        }
 }