View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005750 | ardour | bugs | public | 2013-10-26 13:19 | 2013-10-26 14:05 |
Reporter | nolaiz | Assigned To | |||
Priority | normal | Severity | block | Reproducibility | always |
Status | new | Resolution | open | ||
Summary | 0005750: compilation failure due boost::shared_ptr to bool implicit cast | ||||
Description | Ardour fails to compile because the compiler (gcc 4.6.4 , boost 1.53) refuse to cast a boost::shared_ptr to a bool on libs/pbd/properties.h +445 and gtk2_ardour/editor_regions.cc +297 I attach a patch checking "boost::shared_ptr<>.use_count() > 0" for the bool values. | ||||
Tags | No tags attached. | ||||
2013-10-26 13:19
|
boost_shared_ptr_bool_cast.patch (866 bytes)
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc index 72a0da2..5386528 100644 --- a/gtk2_ardour/editor_regions.cc +++ b/gtk2_ardour/editor_regions.cc @@ -294,7 +294,7 @@ EditorRegions::add_region (boost::shared_ptr<Region> region) string str; TreeModel::Row row; Gdk::Color c; - bool missing_source = boost::dynamic_pointer_cast<SilentFileSource>(region->source()); + bool missing_source = boost::dynamic_pointer_cast<SilentFileSource>(region->source()).use_count>0; if (!_show_automatic_regions && region->automatic()) { return; diff --git a/libs/pbd/pbd/properties.h b/libs/pbd/pbd/properties.h index e65929c..49915fb 100644 --- a/libs/pbd/pbd/properties.h +++ b/libs/pbd/pbd/properties.h @@ -442,7 +442,7 @@ public: } operator bool () const { - return _current; + return _current.use_count() > 0; } protected: |
|
The first patch was wrong. New patch attached with more casts converted. Using shared_ptr<>!=0 instead. Now it finishes the compilation OK |
2013-10-26 14:05
|
boost_shared_ptr_bool_cast_2.patch (2,616 bytes)
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc index 72a0da2..7c2eb84 100644 --- a/gtk2_ardour/editor_regions.cc +++ b/gtk2_ardour/editor_regions.cc @@ -294,7 +294,7 @@ EditorRegions::add_region (boost::shared_ptr<Region> region) string str; TreeModel::Row row; Gdk::Color c; - bool missing_source = boost::dynamic_pointer_cast<SilentFileSource>(region->source()); + bool missing_source = boost::dynamic_pointer_cast<SilentFileSource>(region->source())!=0; if (!_show_automatic_regions && region->automatic()) { return; diff --git a/gtk2_ardour/export_preset_selector.cc b/gtk2_ardour/export_preset_selector.cc index 9f699bb..02793f1 100644 --- a/gtk2_ardour/export_preset_selector.cc +++ b/gtk2_ardour/export_preset_selector.cc @@ -123,9 +123,9 @@ ExportPresetSelector::update_selection () } } - save_button.set_sensitive (current); - remove_button.set_sensitive (current); - new_button.set_sensitive (!current && !text.empty() && !preset_name_exists); + save_button.set_sensitive (current!=0); + remove_button.set_sensitive (current!=0); + new_button.set_sensitive ((current==0) && !text.empty() && !preset_name_exists); } void diff --git a/gtk2_ardour/port_matrix.cc b/gtk2_ardour/port_matrix.cc index 35e9a5c..30107bc 100644 --- a/gtk2_ardour/port_matrix.cc +++ b/gtk2_ardour/port_matrix.cc @@ -707,7 +707,7 @@ PortMatrix::io_from_bundle (boost::shared_ptr<Bundle> b) const bool PortMatrix::can_add_channels (boost::shared_ptr<Bundle> b) const { - return io_from_bundle (b); + return io_from_bundle (b)!=0; } void @@ -730,7 +730,7 @@ PortMatrix::add_channel (boost::shared_ptr<Bundle> b, DataType t) bool PortMatrix::can_remove_channels (boost::shared_ptr<Bundle> b) const { - return io_from_bundle (b); + return io_from_bundle (b) != 0; } void diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc index 60f575f..0347741 100644 --- a/gtk2_ardour/session_option_editor.cc +++ b/gtk2_ardour/session_option_editor.cc @@ -354,7 +354,7 @@ SessionOptionEditor::parameter_changed (std::string const & p) bool SessionOptionEditor::set_use_monitor_section (bool yn) { - bool had_monitor_section = _session->monitor_out(); + bool had_monitor_section = _session->monitor_out() !=0; if (yn) { _session->add_monitor_section (); diff --git a/libs/pbd/pbd/properties.h b/libs/pbd/pbd/properties.h index e65929c..3c48854 100644 --- a/libs/pbd/pbd/properties.h +++ b/libs/pbd/pbd/properties.h @@ -442,7 +442,7 @@ public: } operator bool () const { - return _current; + return _current != 0; } protected: |