OSC: Clear devices should clear cue observers as well.
authorLen Ovens <len@ovenwerks.net>
Wed, 29 Mar 2017 23:07:21 +0000 (16:07 -0700)
committerLen Ovens <len@ovenwerks.net>
Wed, 29 Mar 2017 23:07:21 +0000 (16:07 -0700)
libs/surfaces/osc/osc.cc

index 26477f3cbad09c02a98c8ace67f575c25213583c..571dc65903e6874d2b74f85ddbf5448f4c8b87e3 100644 (file)
@@ -1282,6 +1282,7 @@ OSC::refresh_surface (lo_message msg)
 {
        if (address_only) {
                // get rid of all surfaces and observers.
+               // needs change to only clear those for this address on all ports
                clear_devices();
        }
        OSCSurface *s = get_surface(get_address (msg));
@@ -1326,6 +1327,14 @@ OSC::clear_devices ()
                        delete so;
                }
        }
+       // delete cue observers
+       for (CueObservers::iterator x = cue_observers.begin(); x != cue_observers.end(); x++) {
+               OSCCueObserver* co;
+               if ((co = dynamic_cast<OSCCueObserver*>(*x)) != 0) {
+                       delete co;
+               }
+       }
+
        // clear out surfaces
        _surface.clear();
 }