projects
/
ardour.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0f243d5
)
when creating a new MIDI scene change, check existing scene changes for equality...
author
Paul Davis
<paul@linuxaudiosystems.com>
Tue, 11 Nov 2014 02:28:21 +0000
(21:28 -0500)
committer
Paul Davis
<paul@linuxaudiosystems.com>
Tue, 11 Nov 2014 04:17:19 +0000
(23:17 -0500)
libs/ardour/midi_scene_changer.cc
patch
|
blob
|
history
diff --git
a/libs/ardour/midi_scene_changer.cc
b/libs/ardour/midi_scene_changer.cc
index 75a1a98cb74b0c63dba24c5c43145606626b8045..e799b5a2ce2d7f918bb98b41c49fe06adeac2d44 100644
(file)
--- a/
libs/ardour/midi_scene_changer.cc
+++ b/
libs/ardour/midi_scene_changer.cc
@@
-310,6
+310,19
@@
MIDISceneChanger::program_change_input (MIDI::Parser& parser, MIDI::byte program
MIDISceneChange* msc =new MIDISceneChange (channel, bank, program & 0x7f);
MIDISceneChange* msc =new MIDISceneChange (channel, bank, program & 0x7f);
+ /* check for identical scene change so we can re-use color, if any */
+
+ Locations::LocationList copy (locations->list());
+
+ for (Locations::LocationList::const_iterator l = copy.begin(); l != copy.end(); ++l) {
+ boost::shared_ptr<MIDISceneChange> m = boost::dynamic_pointer_cast<MIDISceneChange>((*l)->scene_change());
+
+ if (m && (*m.get()) == *msc) {
+ msc->set_color (m->color ());
+ break;
+ }
+ }
+
loc->set_scene_change (boost::shared_ptr<MIDISceneChange> (msc));
/* this will generate a "changed" signal to be emitted by locations,
loc->set_scene_change (boost::shared_ptr<MIDISceneChange> (msc));
/* this will generate a "changed" signal to be emitted by locations,