From b25b99216c2c3a2e955ef9c2bb7c2d9ffa31228e Mon Sep 17 00:00:00 2001 From: John Emmas Date: Sat, 26 Aug 2017 13:07:45 +0100 Subject: Fix a compiler problem when building 'gtk2_ardour/template_dialog.cc' with MSVC When setting up the 'TemplatesImported' signal, these 2 calls appear in the c'tor for class TemplateDialog:- boost::bind (&RouteTemplateManager::init, route_tm) boost::bind (&SessionTemplateManager::init, session_tm) However - '&RouteTemplateManager::init' and '&SessionTemplateManager::init' are in fact the address of the same function. This seems to be causing a problem, either for boost::bind, or MSVC (or both). In earlier builds they were 2 separate functions. So let's put them back that way (since the current code actually crashes the compiler!!) --- gtk2_ardour/template_dialog.cc | 57 ++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 19 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/template_dialog.cc b/gtk2_ardour/template_dialog.cc index 1703b0907f..6125c9330f 100644 --- a/gtk2_ardour/template_dialog.cc +++ b/gtk2_ardour/template_dialog.cc @@ -63,7 +63,7 @@ class TemplateManager : public Gtk::HBox, public: virtual ~TemplateManager () {} - void init (); + virtual void init () = 0; void handle_dirty_description (); PBD::Signal0 TemplatesImported; @@ -71,6 +71,9 @@ public: protected: TemplateManager (); + Gtk::TextView _description_editor; + Gtk::Button _save_desc; + void setup_model (const std::vector& templates); void row_selection_changed (); @@ -125,8 +128,6 @@ private: Gtk::CellRendererText _validating_cellrenderer; Gtk::TreeView::Column _validated_column; - Gtk::TextView _description_editor; - Gtk::Button _save_desc; bool _desc_dirty; Gtk::Button _remove_button; @@ -146,6 +147,8 @@ public: SessionTemplateManager () : TemplateManager () {} ~SessionTemplateManager () {} + void init (); + void get_templates (vector& templates) const; private: @@ -165,6 +168,8 @@ public: RouteTemplateManager () : TemplateManager () {} ~RouteTemplateManager () {} + void init (); + void get_templates (vector& templates) const; private: @@ -284,18 +289,6 @@ TemplateManager::TemplateManager () _progress_bar.hide (); } -void -TemplateManager::init () -{ - vector templates; - get_templates (templates); - setup_model (templates); - - _progress_bar.hide (); - _description_editor.set_sensitive (false); - _save_desc.set_sensitive (false); -} - void TemplateManager::setup_model (const vector& templates) { @@ -467,13 +460,14 @@ TemplateManager::key_event (GdkEventKey* ev) return false; } -static -bool accept_all_files (string const &, void *) +static bool +accept_all_files (string const &, void *) { return true; } -static void _set_progress (Progress* p, size_t n, size_t t) +static void +_set_progress (Progress* p, size_t n, size_t t) { p->set_progress (float (n) / float(t)); } @@ -668,13 +662,38 @@ TemplateManager::update_progress_gui (float p) _progress_bar.set_fraction (p); } +void +SessionTemplateManager::init () +{ + vector templates; + get_templates (templates); + setup_model (templates); + + _progress_bar.hide (); + _description_editor.set_sensitive (false); + _save_desc.set_sensitive (false); +} + +void +RouteTemplateManager::init () +{ + vector templates; + get_templates (templates); + setup_model (templates); + + _progress_bar.hide (); + _description_editor.set_sensitive (false); + _save_desc.set_sensitive (false); +} + void SessionTemplateManager::get_templates (vector& templates) const { find_session_templates (templates, /* read_xml = */ true); } -void RouteTemplateManager::get_templates (vector& templates) const +void +RouteTemplateManager::get_templates (vector& templates) const { find_route_templates (templates); } -- cgit v1.2.3