fix a crash when deleting a MIDI region with CC automation (see recipe below)
[ardour.git] / gtk2_ardour / midi_time_axis.h
index fb95ae94fb3bbaf35c446e968c69ab8d007ab23e..fe8a464875a91b33e55d0581b0bf3cce0bd79f5d 100644 (file)
@@ -82,13 +82,13 @@ public:
 
        void set_height (uint32_t, TrackHeightMode m = OnlySelf);
 
-       boost::shared_ptr<ARDOUR::MidiRegion> add_region (ARDOUR::framepos_t, ARDOUR::framecnt_t, bool);
+       boost::shared_ptr<ARDOUR::MidiRegion> add_region (ARDOUR::framepos_t, ARDOUR::framecnt_t, bool, const int32_t sub_num);
 
        void show_all_automation (bool apply_to_selection = false);
        void show_existing_automation (bool apply_to_selection = false);
        void create_automation_child (const Evoral::Parameter& param, bool show);
 
-       bool paste (ARDOUR::framepos_t, const Selection&, PasteContext& ctx);
+       bool paste (ARDOUR::framepos_t, const Selection&, PasteContext& ctx, const int32_t sub_num);
 
        ARDOUR::NoteMode  note_mode() const { return _note_mode; }
        ARDOUR::ColorMode color_mode() const { return _color_mode; }
@@ -113,10 +113,16 @@ public:
 protected:
        void start_step_editing ();
        void stop_step_editing ();
+       void processors_changed (ARDOUR::RouteProcessorChange);
 
 private:
        sigc::signal<void, std::string, std::string>  _midi_patch_settings_changed;
 
+       void setup_midnam_patches ();
+       void update_patch_selector ();
+       void drop_instrument_ref ();
+       PBD::ScopedConnectionList midnam_connection;
+
        void model_changed(const std::string& model);
        void custom_device_mode_changed(const std::string& mode);
 
@@ -133,6 +139,8 @@ private:
        void note_range_changed ();
        void contents_height_changed ();
 
+       void update_control_names ();
+
        bool                         _ignore_signals;
        MidiScroomer*                _range_scroomer;
        PianoRollHeader*             _piano_roll_header;
@@ -159,6 +167,7 @@ private:
        void add_channel_command_menu_item (Gtk::Menu_Helpers::MenuList& items, const std::string& label, ARDOUR::AutomationType auto_type, uint8_t cmd);
 
        Gtk::Menu* controller_menu;
+       Gtk::Menu* poly_pressure_menu;
 
        void add_single_channel_controller_item (Gtk::Menu_Helpers::MenuList& ctl_items, int ctl, const std::string& name);
        void add_multi_channel_controller_item (Gtk::Menu_Helpers::MenuList& ctl_items, int ctl, const std::string& name);