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!!)
This commit is contained in:
John Emmas 2017-08-26 13:07:45 +01:00
parent 5aeb5f0c7d
commit b25b99216c

View File

@ -63,7 +63,7 @@ class TemplateManager : public Gtk::HBox,
public: public:
virtual ~TemplateManager () {} virtual ~TemplateManager () {}
void init (); virtual void init () = 0;
void handle_dirty_description (); void handle_dirty_description ();
PBD::Signal0<void> TemplatesImported; PBD::Signal0<void> TemplatesImported;
@ -71,6 +71,9 @@ public:
protected: protected:
TemplateManager (); TemplateManager ();
Gtk::TextView _description_editor;
Gtk::Button _save_desc;
void setup_model (const std::vector<ARDOUR::TemplateInfo>& templates); void setup_model (const std::vector<ARDOUR::TemplateInfo>& templates);
void row_selection_changed (); void row_selection_changed ();
@ -125,8 +128,6 @@ private:
Gtk::CellRendererText _validating_cellrenderer; Gtk::CellRendererText _validating_cellrenderer;
Gtk::TreeView::Column _validated_column; Gtk::TreeView::Column _validated_column;
Gtk::TextView _description_editor;
Gtk::Button _save_desc;
bool _desc_dirty; bool _desc_dirty;
Gtk::Button _remove_button; Gtk::Button _remove_button;
@ -146,6 +147,8 @@ public:
SessionTemplateManager () : TemplateManager () {} SessionTemplateManager () : TemplateManager () {}
~SessionTemplateManager () {} ~SessionTemplateManager () {}
void init ();
void get_templates (vector<TemplateInfo>& templates) const; void get_templates (vector<TemplateInfo>& templates) const;
private: private:
@ -165,6 +168,8 @@ public:
RouteTemplateManager () : TemplateManager () {} RouteTemplateManager () : TemplateManager () {}
~RouteTemplateManager () {} ~RouteTemplateManager () {}
void init ();
void get_templates (vector<TemplateInfo>& templates) const; void get_templates (vector<TemplateInfo>& templates) const;
private: private:
@ -284,18 +289,6 @@ TemplateManager::TemplateManager ()
_progress_bar.hide (); _progress_bar.hide ();
} }
void
TemplateManager::init ()
{
vector<TemplateInfo> templates;
get_templates (templates);
setup_model (templates);
_progress_bar.hide ();
_description_editor.set_sensitive (false);
_save_desc.set_sensitive (false);
}
void void
TemplateManager::setup_model (const vector<TemplateInfo>& templates) TemplateManager::setup_model (const vector<TemplateInfo>& templates)
{ {
@ -467,13 +460,14 @@ TemplateManager::key_event (GdkEventKey* ev)
return false; return false;
} }
static static bool
bool accept_all_files (string const &, void *) accept_all_files (string const &, void *)
{ {
return true; 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)); p->set_progress (float (n) / float(t));
} }
@ -668,13 +662,38 @@ TemplateManager::update_progress_gui (float p)
_progress_bar.set_fraction (p); _progress_bar.set_fraction (p);
} }
void
SessionTemplateManager::init ()
{
vector<TemplateInfo> templates;
get_templates (templates);
setup_model (templates);
_progress_bar.hide ();
_description_editor.set_sensitive (false);
_save_desc.set_sensitive (false);
}
void
RouteTemplateManager::init ()
{
vector<TemplateInfo> templates;
get_templates (templates);
setup_model (templates);
_progress_bar.hide ();
_description_editor.set_sensitive (false);
_save_desc.set_sensitive (false);
}
void void
SessionTemplateManager::get_templates (vector<TemplateInfo>& templates) const SessionTemplateManager::get_templates (vector<TemplateInfo>& templates) const
{ {
find_session_templates (templates, /* read_xml = */ true); find_session_templates (templates, /* read_xml = */ true);
} }
void RouteTemplateManager::get_templates (vector<TemplateInfo>& templates) const void
RouteTemplateManager::get_templates (vector<TemplateInfo>& templates) const
{ {
find_route_templates (templates); find_route_templates (templates);
} }