X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fmackie%2Fsurface.h;h=c536c438561e29b326efb56f6af8de347c6ee24c;hb=0a2377e9b4c5b3804253f359334089955c3a2ce7;hp=17b515e3d7d42086c340a4687e1a4d18a917a1f5;hpb=c9658134cebe307f7628fc2631f4d9528c5bbb99;p=ardour.git diff --git a/libs/surfaces/mackie/surface.h b/libs/surfaces/mackie/surface.h index 17b515e3d7..c536c43856 100644 --- a/libs/surfaces/mackie/surface.h +++ b/libs/surfaces/mackie/surface.h @@ -3,6 +3,8 @@ #include +#include + #include "pbd/signals.h" #include "pbd/xml++.h" #include "midi++/types.h" @@ -43,7 +45,7 @@ class Jog; class Pot; class Led; -class Surface : public PBD::ScopedConnectionList +class Surface : public PBD::ScopedConnectionList, public sigc::trackable { public: Surface (MackieControlProtocol&, const std::string& name, uint32_t number, surface_type_t stype); @@ -78,6 +80,7 @@ public: Strip* nth_strip (uint32_t n) const; bool route_is_locked_to_strip (boost::shared_ptr) const; + bool route_is_mapped (boost::shared_ptr) const; /// This collection owns the groups typedef std::map Groups; @@ -89,8 +92,8 @@ public: const MidiByteArray& sysex_hdr() const; - void periodic (uint64_t now_usecs); - void redisplay (); + void periodic (ARDOUR::microseconds_t now_usecs); + void redisplay (ARDOUR::microseconds_t now_usecs, bool force); void hui_heartbeat (); void handle_midi_pitchbend_message (MIDI::Parser&, MIDI::pitchbend_t, uint32_t channel_id); @@ -149,10 +152,12 @@ public: void show_two_char_display (const std::string & msg, const std::string & dots = " "); void show_two_char_display (unsigned int value, const std::string & dots = " "); - void update_view_mode_display (); + void update_view_mode_display (bool with_helpful_text); void update_flip_mode_display (); + void update_potmode (); void gui_selection_changed (const ARDOUR::StrongRouteNotificationList&); + void subview_mode_changed (); MackieControlProtocol& mcp() const { return _mcp; } @@ -162,11 +167,15 @@ public: void notify_metering_state_changed(); void turn_it_on (); + void display_message_for (std::string const& msg, uint64_t msecs); + + bool connection_handler (boost::weak_ptr, std::string name1, boost::weak_ptr, std::string name2, bool); + + void master_monitor_may_have_changed (); + XMLNode& get_state (); int set_state (const XMLNode&, int version); - protected: - private: MackieControlProtocol& _mcp; SurfacePort* _port; @@ -178,7 +187,7 @@ public: Mackie::JogWheel* _jog_wheel; Fader* _master_fader; float _last_master_gain_written; - PBD::ScopedConnection port_connection; + PBD::ScopedConnection master_connection; void handle_midi_sysex (MIDI::Parser&, MIDI::byte *, size_t count); MidiByteArray host_connection_query (MidiByteArray& bytes); @@ -189,7 +198,6 @@ public: void init_strips (uint32_t n); void setup_master (); void master_gain_changed (); - void connection_handler (boost::weak_ptr, std::string name1, boost::weak_ptr, std::string name2, bool); enum ConnectionState { InputConnected = 0x1, @@ -198,11 +206,11 @@ public: int connection_state; - /* this times the duration between press+release events for all - possible 127 buttons on THIS surface (not all surfaces). - */ + MidiByteArray display_line (std::string const& msg, int line_num); - ARDOUR::microseconds_t button_timer[127]; + public: + /* IP MIDI devices need to keep a handle on this and destroy it */ + GSource* input_source; }; }