X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_routes.h;h=94a2186a4c70eb3b053720e1b88b06e39165f47e;hb=7447843a33a4bef1613fe1b9bbf1a463ad81de49;hp=e07a7787aad886248f13082889b5087f3c3b8b5d;hpb=5b62e88fbf1022a48c50c9975c2a81a05ecdbb0c;p=ardour.git diff --git a/gtk2_ardour/editor_routes.h b/gtk2_ardour/editor_routes.h index e07a7787aa..94a2186a4c 100644 --- a/gtk2_ardour/editor_routes.h +++ b/gtk2_ardour/editor_routes.h @@ -38,17 +38,19 @@ public: void move_selected_tracks (bool); void show_track_in_display (TimeAxisView &); - void suspend_redisplay () { - _no_redisplay = true; - } - void allow_redisplay () { - _no_redisplay = false; + void suspend_redisplay () { + if (!_no_redisplay) { + _no_redisplay = true; + _redisplay_on_resume = false; + } } void resume_redisplay () { _no_redisplay = false; - redisplay (); + if (_redisplay_on_resume) { + redisplay (); + } } void redisplay (); @@ -59,11 +61,12 @@ public: std::list views () const; void hide_all_tracks (bool); void clear (); - void sync_order_keys_from_treeview (); - void reset_remote_control_ids (); + void sync_order_keys_from_treeview (); + void reset_remote_control_ids (); private: void initial_display (); + void redisplay_real (); void on_input_active_changed (std::string const &); void on_tv_rec_enable_changed (std::string const &); void on_tv_mute_enable_toggled (std::string const &); @@ -72,14 +75,15 @@ private: void on_tv_solo_safe_toggled (std::string const &); void build_menu (); void show_menu (); - void sync_treeview_from_order_keys (); - void route_deleted (Gtk::TreeModel::Path const &); + void sync_treeview_from_order_keys (); + void row_deleted (Gtk::TreeModel::Path const &); void visible_changed (std::string const &); void active_changed (std::string const &); void reordered (Gtk::TreeModel::Path const &, Gtk::TreeModel::iterator const &, int *); bool button_press (GdkEventButton *); void route_property_changed (const PBD::PropertyChange&, boost::weak_ptr); void handle_gui_changes (std::string const &, void *); + bool idle_update_mute_rec_solo_etc (); void update_rec_display (); void update_mute_display (); void update_solo_display (bool); @@ -98,6 +102,7 @@ private: void show_all_miditracks (); void hide_all_miditracks (); void show_tracks_with_regions_at_playhead (); + void selection_changed (); void display_drag_data_received ( Glib::RefPtr const &, gint, gint, Gtk::SelectionData const &, guint, guint @@ -154,21 +159,25 @@ private: bool _ignore_reorder; bool _no_redisplay; - bool _adding_routes; + bool _adding_routes; + bool _route_deletion_in_progress; + bool _redisplay_on_resume; + volatile gint _redisplay_active; + volatile gint _queue_tv_update; Gtk::Menu* _menu; - Gtk::Widget* old_focus; - uint32_t selection_countdown; - Gtk::CellEditable* name_editable; - - bool key_press (GdkEventKey* ev); - bool focus_in (GdkEventFocus*); - bool focus_out (GdkEventFocus*); - bool enter_notify (GdkEventCrossing*); - bool leave_notify (GdkEventCrossing*); - void name_edit_started (Gtk::CellEditable*, const Glib::ustring&); - - bool get_relevant_routes (boost::shared_ptr rl); + Gtk::Widget* old_focus; + uint32_t selection_countdown; + Gtk::CellEditable* name_editable; + + bool key_press (GdkEventKey* ev); + bool focus_in (GdkEventFocus*); + bool focus_out (GdkEventFocus*); + bool enter_notify (GdkEventCrossing*); + bool leave_notify (GdkEventCrossing*); + void name_edit_started (Gtk::CellEditable*, const Glib::ustring&); + + bool get_relevant_routes (boost::shared_ptr rl); }; #endif /* __ardour_gtk_editor_route_h__ */