change the way ControlProtocols (control surfaces) are notified and handle Stripable selection changes

The Editor continues to notify them, but via a direct call to ControlProtocolManager, not a signal.
The CP Manager calls the ControlProtocol static method to set up static data structures holding
selection info for all surfaces and then notifies each surface/protocol that selection has changed.
This commit is contained in:
Paul Davis 2017-05-12 14:51:31 +01:00
parent efc2660fec
commit eb3f50e15c
23 changed files with 64 additions and 83 deletions

View file

@ -23,6 +23,7 @@
#include "pbd/stacktrace.h"
#include "pbd/unwind.h"
#include "ardour/control_protocol_manager.h"
#include "ardour/midi_region.h"
#include "ardour/playlist.h"
#include "ardour/profile.h"
@ -30,8 +31,6 @@
#include "ardour/selection.h"
#include "ardour/session.h"
#include "control_protocol/control_protocol.h"
#include "editor.h"
#include "editor_drag.h"
#include "editor_routes.h"
@ -1090,7 +1089,7 @@ Editor::presentation_info_changed (PropertyChange const & what_changed)
/* STEP 4: notify control protocols */
ControlProtocol::StripableSelectionChanged (stripables);
ControlProtocolManager::instance().stripable_selection_changed (stripables);
if (sfbrowser && _session && !_session->deletion_in_progress()) {
uint32_t audio_track_cnt = 0;