summaryrefslogtreecommitdiff
path: root/libs/surfaces/osc/osc.cc
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2017-03-29 16:07:21 -0700
committerLen Ovens <len@ovenwerks.net>2017-03-29 16:07:21 -0700
commit8de580c12393a79a9137b8c8191b0a951003514b (patch)
treec0ffb02edfe114185ffec931313aaf0894f2e1ad /libs/surfaces/osc/osc.cc
parent05231949e648f7e0a9cf6c3a3884b0226e3ab2b7 (diff)
OSC: Clear devices should clear cue observers as well.
Diffstat (limited to 'libs/surfaces/osc/osc.cc')
-rw-r--r--libs/surfaces/osc/osc.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 26477f3cba..571dc65903 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -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();
}