summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorJeremy Carter <Jeremy@JeremyCarter.ca>2014-11-14 13:34:15 -0500
committerJeremy Carter <Jeremy@JeremyCarter.ca>2014-11-14 13:34:15 -0500
commit592bfdd3f4af9463e2e6a691d7240839ba50d61d (patch)
tree0c0e17acda42cf26c35b15cff67c1e0cb961e139 /gtk2_ardour
parent32b86104aa7f814ab5930c206ffa18971313c79d (diff)
parent6b3a8915f3c50f7220121fcb9202ec20144389c4 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/add_route_dialog.cc2
-rw-r--r--gtk2_ardour/ardour_ui.cc11
-rw-r--r--gtk2_ardour/audio_streamview.cc2
-rw-r--r--gtk2_ardour/automation_region_view.cc1
-rw-r--r--gtk2_ardour/editor.cc2
-rw-r--r--gtk2_ardour/editor_actions.cc8
-rw-r--r--gtk2_ardour/editor_audio_import.cc4
-rw-r--r--gtk2_ardour/editor_canvas.cc2
-rw-r--r--gtk2_ardour/editor_drag.cc30
-rw-r--r--gtk2_ardour/editor_export_audio.cc2
-rw-r--r--gtk2_ardour/editor_markers.cc34
-rw-r--r--gtk2_ardour/editor_mouse.cc18
-rw-r--r--gtk2_ardour/editor_ops.cc8
-rw-r--r--gtk2_ardour/editor_regions.cc2
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc8
-rw-r--r--gtk2_ardour/gain_meter.cc2
-rw-r--r--gtk2_ardour/latency_gui.cc2
-rw-r--r--gtk2_ardour/midi_region_view.cc34
-rw-r--r--gtk2_ardour/midi_region_view.h1
-rw-r--r--gtk2_ardour/midi_selection.cc26
-rw-r--r--gtk2_ardour/midi_selection.h11
-rw-r--r--gtk2_ardour/note_base.cc2
-rw-r--r--gtk2_ardour/note_select_dialog.h1
-rw-r--r--gtk2_ardour/port_matrix.cc2
-rw-r--r--gtk2_ardour/rc_option_editor.cc25
-rw-r--r--gtk2_ardour/region_view.cc4
-rw-r--r--gtk2_ardour/rhythm_ferret.cc2
-rw-r--r--gtk2_ardour/route_group_dialog.cc2
-rw-r--r--gtk2_ardour/route_time_axis.cc6
-rw-r--r--gtk2_ardour/selection.cc4
-rw-r--r--gtk2_ardour/sfdb_ui.cc4
-rw-r--r--gtk2_ardour/streamview.cc4
-rw-r--r--gtk2_ardour/time_axis_view.cc2
-rw-r--r--gtk2_ardour/time_axis_view_item.cc24
-rw-r--r--gtk2_ardour/time_selection.cc2
-rw-r--r--gtk2_ardour/utils.cc2
36 files changed, 169 insertions, 127 deletions
diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc
index 94e4369aae..57fd46be73 100644
--- a/gtk2_ardour/add_route_dialog.cc
+++ b/gtk2_ardour/add_route_dialog.cc
@@ -346,7 +346,7 @@ AddRouteDialog::mode ()
} else {
fatal << string_compose (X_("programming error: unknown track mode in add route dialog combo = %1"), str)
<< endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
/* keep gcc happy */
return ARDOUR::Normal;
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 2e9d8b3247..03ca13745f 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -88,6 +88,9 @@
#ifdef WINDOWS_VST_SUPPORT
#include <fst.h>
#endif
+#ifdef AUDIOUNIT_SUPPORT
+#include "ardour/audio_unit.h"
+#endif
#include "timecode/time.h"
@@ -483,6 +486,14 @@ ARDOUR_UI::post_engine ()
{
/* Things to be done once (and once ONLY) after we have a backend running in the AudioEngine
*/
+#ifdef AUDIOUNIT_SUPPORT
+ std::string au_msg;
+ if (AUPluginInfo::au_get_crashlog(au_msg)) {
+ popup_error(_("Audio Unit Plugin Scan Failed. Automatic AU scanning has been disabled. Please see the log window for further details."));
+ error << _("Audio Unit Plugin Scan Failed:") << endmsg;
+ info << au_msg << endmsg;
+ }
+#endif
ARDOUR::init_post_engine ();
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index 68757c256b..df1820eeeb 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -113,7 +113,7 @@ AudioStreamView::create_region_view (boost::shared_ptr<Region> r, bool wait_for_
break;
default:
fatal << string_compose (_("programming error: %1"), "illegal track mode in ::create_region_view()") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc
index 2da15c17c5..e088f7c59f 100644
--- a/gtk2_ardour/automation_region_view.cc
+++ b/gtk2_ardour/automation_region_view.cc
@@ -60,6 +60,7 @@ AutomationRegionView::AutomationRegionView (ArdourCanvas::Container*
AutomationRegionView::~AutomationRegionView ()
{
+ RegionViewGoingAway (this); /* EMIT_SIGNAL */
}
void
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index ba4eb09cd1..d5c9aa6fea 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -2631,7 +2631,7 @@ Editor::timecode_snap_to_internal (framepos_t& start, int32_t direction, bool /*
break;
default:
fatal << "Editor::smpte_snap_to_internal() called with non-timecode snap type!" << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
}
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index d16105987a..e8125ef593 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -1081,7 +1081,7 @@ Editor::snap_type_action (SnapType type)
break;
default:
fatal << string_compose (_("programming error: %1: %2"), "Editor: impossible snap-to type", (int) type) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
act = ActionManager::get_action (X_("Snap"), action);
@@ -1477,7 +1477,7 @@ Editor::snap_mode_action (SnapMode mode)
break;
default:
fatal << string_compose (_("programming error: %1: %2"), "Editor: impossible snap mode type", (int) mode) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
act = ActionManager::get_action (X_("Editor"), action);
@@ -1541,7 +1541,7 @@ Editor::edit_point_action (EditPoint ep)
break;
default:
fatal << string_compose (_("programming error: %1: %2"), "Editor: impossible edit point type", (int) ep) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
act = ActionManager::get_action (X_("Editor"), action);
@@ -1599,7 +1599,7 @@ Editor::zoom_focus_action (ZoomFocus focus)
break;
default:
fatal << string_compose (_("programming error: %1: %2"), "Editor: impossible focus type", (int) focus) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
act = ActionManager::get_action (X_("Zoom"), action);
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index e5ac8c6c72..af1d41f91f 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -314,14 +314,14 @@ Editor::do_import (vector<string> paths, ImportDisposition disposition, ImportMo
continue;
case 0:
fatal << "Updating existing sources should be disabled!" << endmsg;
- /* NOTREACHED*/
+ abort(); /* NOTREACHED*/
break;
case 1:
replace = false;
break;
default:
fatal << "Illegal return " << check << " from check_whether_and_how_to_import()!" << endmsg;
- /* NOTREACHED*/
+ abort(); /* NOTREACHED*/
}
/* have to reset this for every file we handle */
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index 7eeeba2ed0..482ada3cbc 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -1348,7 +1348,7 @@ Editor::choose_canvas_cursor_on_entry (GdkEventCrossing* /*event*/, ItemType typ
}
if (cursor) {
- set_canvas_cursor (cursor, false);
+ set_canvas_cursor (cursor, true);
}
}
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index aa37467f2c..0aaec8d24d 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -1967,7 +1967,10 @@ NoteResizeDrag::start_grab (GdkEvent* event, Gdk::Cursor* /*ignored*/)
MidiRegionSelection::iterator next;
next = r;
++next;
- (*r)->begin_resizing (at_front);
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*r);
+ if (mrv) {
+ mrv->begin_resizing (at_front);
+ }
r = next;
}
}
@@ -1979,7 +1982,10 @@ NoteResizeDrag::motion (GdkEvent* /*event*/, bool /*first_move*/)
for (MidiRegionSelection::iterator r = ms.begin(); r != ms.end(); ++r) {
NoteBase* nb = reinterpret_cast<NoteBase*> (_item->get_data ("notebase"));
assert (nb);
- (*r)->update_resizing (nb, at_front, _drags->current_pointer_x() - grab_x(), relative);
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*r);
+ if (mrv) {
+ mrv->update_resizing (nb, at_front, _drags->current_pointer_x() - grab_x(), relative);
+ }
}
}
@@ -1990,7 +1996,10 @@ NoteResizeDrag::finished (GdkEvent*, bool /*movement_occurred*/)
for (MidiRegionSelection::iterator r = ms.begin(); r != ms.end(); ++r) {
NoteBase* nb = reinterpret_cast<NoteBase*> (_item->get_data ("notebase"));
assert (nb);
- (*r)->commit_resizing (nb, at_front, _drags->current_pointer_x() - grab_x(), relative);
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*r);
+ if (mrv) {
+ mrv->commit_resizing (nb, at_front, _drags->current_pointer_x() - grab_x(), relative);
+ }
}
}
@@ -1999,7 +2008,10 @@ NoteResizeDrag::aborted (bool)
{
MidiRegionSelection& ms (_editor->get_selection().midi_regions);
for (MidiRegionSelection::iterator r = ms.begin(); r != ms.end(); ++r) {
- (*r)->abort_resizing ();
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*r);
+ if (mrv) {
+ mrv->abort_resizing ();
+ }
}
}
@@ -5268,12 +5280,10 @@ void
NoteCreateDrag::motion (GdkEvent* event, bool)
{
_note[1] = max ((framepos_t)0, adjusted_current_frame (event) - _region_view->region()->position ());
- double const x = _editor->sample_to_pixel (_note[1]);
- if (_note[1] > _note[0]) {
- _drag_rect->set_x1 (x);
- } else {
- _drag_rect->set_x0 (x);
- }
+ double const x0 = _editor->sample_to_pixel (_note[0]);
+ double const x1 = _editor->sample_to_pixel (_note[1]);
+ _drag_rect->set_x0 (std::min(x0, x1));
+ _drag_rect->set_x1 (std::max(x0, x1));
}
void
diff --git a/gtk2_ardour/editor_export_audio.cc b/gtk2_ardour/editor_export_audio.cc
index e40030d671..f92cf07150 100644
--- a/gtk2_ardour/editor_export_audio.cc
+++ b/gtk2_ardour/editor_export_audio.cc
@@ -90,7 +90,7 @@ Editor::export_range ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index 0900c7fc18..6d07ecc357 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -704,7 +704,7 @@ Editor::remove_marker (ArdourCanvas::Item& item, GdkEvent*)
if ((marker = static_cast<Marker*> (item.get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if (entered_marker == marker) {
@@ -791,7 +791,7 @@ Editor::marker_context_menu (GdkEventButton* ev, ArdourCanvas::Item* item)
Marker * marker;
if ((marker = reinterpret_cast<Marker *> (item->get_data("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
bool is_start;
@@ -976,7 +976,7 @@ Editor::marker_menu_hide ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -994,7 +994,7 @@ Editor::marker_menu_select_using_range ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1012,7 +1012,7 @@ Editor::marker_menu_select_all_selectables_using_range ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1031,7 +1031,7 @@ Editor::marker_menu_separate_regions_using_location ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1050,7 +1050,7 @@ Editor::marker_menu_play_from ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1080,7 +1080,7 @@ Editor::marker_menu_set_playhead ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1111,7 +1111,7 @@ Editor::marker_menu_range_to_next ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1141,7 +1141,7 @@ Editor::marker_menu_set_from_playhead ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1169,7 +1169,7 @@ Editor::marker_menu_set_from_selection (bool /*force_regions*/)
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1200,7 +1200,7 @@ Editor::marker_menu_play_range ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1225,7 +1225,7 @@ Editor::marker_menu_loop_range ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* l;
@@ -1276,7 +1276,7 @@ Editor::dynamic_cast_marker_object (void* p, MeterMarker** m, TempoMarker** t) c
Marker* marker = reinterpret_cast<Marker*> (p);
if (!marker) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
*m = dynamic_cast<MeterMarker*> (marker);
@@ -1320,7 +1320,7 @@ Editor::toggle_marker_menu_lock ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* loc;
@@ -1346,7 +1346,7 @@ Editor::marker_menu_rename ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
@@ -1540,7 +1540,7 @@ Editor::toggle_marker_menu_glue ()
if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* loc;
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index c4e19b15a8..3ad9f0a54c 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -1332,12 +1332,12 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
if ((marker = reinterpret_cast<Marker *> (item->get_data ("marker"))) == 0) {
fatal << _("programming error: tempo marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if ((tempo_marker = dynamic_cast<TempoMarker*> (marker)) == 0) {
fatal << _("programming error: marker for tempo is not a tempo marker!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
edit_tempo_marker (*tempo_marker);
@@ -1350,12 +1350,12 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT
if ((marker = reinterpret_cast<Marker *> (item->get_data ("marker"))) == 0) {
fatal << _("programming error: tempo marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if ((meter_marker = dynamic_cast<MeterMarker*> (marker)) == 0) {
fatal << _("programming error: marker for meter is not a meter marker!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
edit_meter_marker (*meter_marker);
break;
@@ -1813,6 +1813,8 @@ Editor::leave_handler (ArdourCanvas::Item* item, GdkEvent*, ItemType item_type)
bool is_start;
bool ret = true;
+ reset_canvas_cursor ();
+
switch (item_type) {
case ControlPointItem:
_verbose_cursor->hide ();
@@ -1997,7 +1999,7 @@ Editor::can_remove_control_point (ArdourCanvas::Item* item)
if ((control_point = reinterpret_cast<ControlPoint *> (item->get_data ("control_point"))) == 0) {
fatal << _("programming error: control point canvas item has no control point object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
AutomationLine& line = control_point->line ();
@@ -2022,7 +2024,7 @@ Editor::remove_control_point (ArdourCanvas::Item* item)
if ((control_point = reinterpret_cast<ControlPoint *> (item->get_data ("control_point"))) == 0) {
fatal << _("programming error: control point canvas item has no control point object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
control_point->line().remove_point (*control_point);
@@ -2035,7 +2037,7 @@ Editor::edit_control_point (ArdourCanvas::Item* item)
if (p == 0) {
fatal << _("programming error: control point canvas item has no control point object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
ControlPointDialog d (p);
@@ -2240,7 +2242,7 @@ Editor::hide_marker (ArdourCanvas::Item* item, GdkEvent* /*event*/)
if ((marker = static_cast<Marker *> (item->get_data ("marker"))) == 0) {
fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
Location* location = find_location_from_marker (marker, is_start);
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 1f23aa4319..b8e13bc196 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -646,7 +646,7 @@ Editor::build_region_boundary_cache ()
break;
default:
fatal << string_compose (_("build_region_boundary_cache called with snap_type = %1"), _snap_type) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return;
}
@@ -4000,8 +4000,10 @@ void
Editor::cut_copy_midi (CutCopyOp op)
{
for (MidiRegionSelection::iterator i = selection->midi_regions.begin(); i != selection->midi_regions.end(); ++i) {
- MidiRegionView* mrv = *i;
- mrv->cut_copy_clear (op);
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(*i);
+ if (mrv) {
+ mrv->cut_copy_clear (op);
+ }
}
}
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc
index 886d5e1209..78c45c7d8d 100644
--- a/gtk2_ardour/editor_regions.cc
+++ b/gtk2_ardour/editor_regions.cc
@@ -1560,7 +1560,7 @@ EditorRegions::sort_type_action (Editing::RegionListSortType t) const
break;
default:
fatal << string_compose (_("programming error: %1: %2"), "EditorRegions: impossible sort type", (int) t) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
RefPtr<Action> act = ActionManager::get_action (X_("RegionList"), action);
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index fec380ee35..daf36d2d72 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -271,12 +271,12 @@ Editor::remove_tempo_marker (ArdourCanvas::Item* item)
if ((marker = reinterpret_cast<Marker *> (item->get_data ("marker"))) == 0) {
fatal << _("programming error: tempo marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if ((tempo_marker = dynamic_cast<TempoMarker*> (marker)) == 0) {
fatal << _("programming error: marker for tempo is not a tempo marker!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if (tempo_marker->tempo().movable()) {
@@ -375,12 +375,12 @@ Editor::remove_meter_marker (ArdourCanvas::Item* item)
if ((marker = reinterpret_cast<Marker *> (item->get_data ("marker"))) == 0) {
fatal << _("programming error: meter marker canvas item has no marker object pointer!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if ((meter_marker = dynamic_cast<MeterMarker*> (marker)) == 0) {
fatal << _("programming error: marker for meter is not a meter marker!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if (meter_marker->meter().movable()) {
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index daba2e77d4..7b7ad33f9a 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -610,7 +610,7 @@ next_meter_point (MeterPoint mp)
break;
}
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return MeterInput;
}
diff --git a/gtk2_ardour/latency_gui.cc b/gtk2_ardour/latency_gui.cc
index 703e7dd4ab..d21a055d9e 100644
--- a/gtk2_ardour/latency_gui.cc
+++ b/gtk2_ardour/latency_gui.cc
@@ -148,7 +148,7 @@ LatencyGUI::change_latency_from_button (int dir)
} else {
fatal << string_compose (_("programming error: %1 (%2)"), X_("illegal string in latency GUI units combo"), unitstr)
<< endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
if (dir > 0) {
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index 08fab6ff86..81248c9585 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -112,6 +112,7 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Container *parent, RouteTimeAxisVi
, _last_event_y (0)
, pre_enter_cursor (0)
, pre_press_cursor (0)
+ , pre_note_enter_cursor (0)
, _note_player (0)
{
CANVAS_DEBUG_NAME (_note_group, string_compose ("note group for %1", get_item_name()));
@@ -149,6 +150,7 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Container *parent, RouteTimeAxisVi
, _last_event_y (0)
, pre_enter_cursor (0)
, pre_press_cursor (0)
+ , pre_note_enter_cursor (0)
, _note_player (0)
{
CANVAS_DEBUG_NAME (_note_group, string_compose ("note group for %1", get_item_name()));
@@ -195,6 +197,7 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other)
, _last_event_y (0)
, pre_enter_cursor (0)
, pre_press_cursor (0)
+ , pre_note_enter_cursor (0)
, _note_player (0)
{
init (false);
@@ -223,6 +226,7 @@ MidiRegionView::MidiRegionView (const MidiRegionView& other, boost::shared_ptr<M
, _last_event_y (0)
, pre_enter_cursor (0)
, pre_press_cursor (0)
+ , pre_note_enter_cursor (0)
, _note_player (0)
{
init (true);
@@ -420,6 +424,7 @@ MidiRegionView::leave_notify (GdkEventCrossing*)
if (pre_enter_cursor) {
Editor* editor = dynamic_cast<Editor *> (&trackview.editor());
editor->set_canvas_cursor(pre_enter_cursor);
+ pre_enter_cursor = 0;
}
return false;
@@ -456,7 +461,7 @@ MidiRegionView::button_press (GdkEventButton* ev)
if (m == MouseObject && Keyboard::modifier_state_contains (ev->state, Keyboard::insert_note_modifier())) {
pre_press_cursor = editor->get_canvas_cursor ();
editor->set_canvas_cursor (editor->cursors()->midi_pencil);
- }
+ }
if (_mouse_state != SelectTouchDragging) {
@@ -3116,7 +3121,7 @@ MidiRegionView::note_entered(NoteBase* ev)
{
Editor* editor = dynamic_cast<Editor*>(&trackview.editor());
- pre_enter_cursor = editor->get_canvas_cursor ();
+ pre_note_enter_cursor = editor->get_canvas_cursor ();
if (_mouse_state == SelectTouchDragging) {
note_selected (ev, true);
@@ -3136,9 +3141,9 @@ MidiRegionView::note_left (NoteBase*)
editor->verbose_cursor()->hide ();
- if (pre_enter_cursor) {
- editor->set_canvas_cursor (pre_enter_cursor);
- pre_enter_cursor = 0;
+ if (pre_note_enter_cursor) {
+ editor->set_canvas_cursor (pre_note_enter_cursor);
+ pre_note_enter_cursor = 0;
}
}
@@ -3190,13 +3195,13 @@ MidiRegionView::note_mouse_position (float x_fraction, float /*y_fraction*/, boo
Editing::MouseMode mm = editor->current_mouse_mode();
bool trimmable = (mm == MouseObject || mm == MouseTimeFX || mm == MouseDraw);
- if (trimmable && x_fraction > 0.0 && x_fraction < 0.2) {
- editor->set_canvas_cursor (editor->cursors()->left_side_trim);
- } else if (trimmable && x_fraction >= 0.8 && x_fraction < 1.0) {
- editor->set_canvas_cursor (editor->cursors()->right_side_trim);
- } else {
- if (pre_enter_cursor && can_set_cursor) {
- editor->set_canvas_cursor (pre_enter_cursor);
+ if (can_set_cursor) {
+ if (trimmable && x_fraction > 0.0 && x_fraction < 0.2) {
+ editor->set_canvas_cursor (editor->cursors()->left_side_trim);
+ } else if (trimmable && x_fraction >= 0.8 && x_fraction < 1.0) {
+ editor->set_canvas_cursor (editor->cursors()->right_side_trim);
+ } else if (pre_note_enter_cursor) {
+ editor->set_canvas_cursor (pre_note_enter_cursor);
}
}
}
@@ -3221,7 +3226,7 @@ MidiRegionView::set_frame_color()
}
if (!rect_visible) {
- f = UINT_RGBA_CHANGE_A (f, 0);
+ f = UINT_RGBA_CHANGE_A (f, 80);
}
frame->set_fill_color (f);
@@ -3520,7 +3525,8 @@ MidiRegionView::update_ghost_note (double x, double y)
/* note that this sets the time of the ghost note in beats relative to
the start of the source; that is how all note times are stored.
*/
- _ghost_note->note()->set_time (absolute_frames_to_source_beats (f + _region->position ()));
+ _ghost_note->note()->set_time (
+ std::max(0.0, absolute_frames_to_source_beats (f + _region->position ())));
_ghost_note->note()->set_length (length);
_ghost_note->note()->set_note (midi_stream_view()->y_to_note (y));
_ghost_note->note()->set_channel (mtv->get_channel_for_add ());
diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h
index 3fd6625ce9..65ca7df7ab 100644
--- a/gtk2_ardour/midi_region_view.h
+++ b/gtk2_ardour/midi_region_view.h
@@ -473,6 +473,7 @@ private:
Gdk::Cursor* pre_enter_cursor;
Gdk::Cursor* pre_press_cursor;
+ Gdk::Cursor* pre_note_enter_cursor;
NotePlayer* _note_player;
diff --git a/gtk2_ardour/midi_selection.cc b/gtk2_ardour/midi_selection.cc
index bf9b88899b..f98f696444 100644
--- a/gtk2_ardour/midi_selection.cc
+++ b/gtk2_ardour/midi_selection.cc
@@ -17,29 +17,19 @@
*/
-#include "gtkmm2ext/gui_thread.h"
-#include "midi_region_view.h"
#include "midi_selection.h"
-#include "region_view.h"
MidiRegionSelection::MidiRegionSelection ()
-{
- RegionView::RegionViewGoingAway.connect (_death_connection, MISSING_INVALIDATOR, boost::bind (&MidiRegionSelection::remove_it, this, _1), gui_context());
-}
+ : RegionSelection ()
+{}
-/** Copy constructor.
- * @param other MidiRegionSelection to copy.
- */
MidiRegionSelection::MidiRegionSelection (MidiRegionSelection const & other)
- : std::list<MidiRegionView*> (other)
-{
- RegionView::RegionViewGoingAway.connect (_death_connection, MISSING_INVALIDATOR, boost::bind (&MidiRegionSelection::remove_it, this, _1), gui_context());
-}
-
+ : RegionSelection (other)
+{}
-void
-MidiRegionSelection::remove_it (RegionView* rv)
+MidiRegionSelection&
+MidiRegionSelection::operator= (const MidiRegionSelection& other)
{
- MidiRegionView* mrv = dynamic_cast<MidiRegionView*> (rv);
- remove (mrv);
+ RegionSelection::operator=(other);
+ return *this;
}
diff --git a/gtk2_ardour/midi_selection.h b/gtk2_ardour/midi_selection.h
index f2c2d3fc60..2aa04356d7 100644
--- a/gtk2_ardour/midi_selection.h
+++ b/gtk2_ardour/midi_selection.h
@@ -20,22 +20,19 @@
#ifndef __ardour_gtk_midi_selection_h__
#define __ardour_gtk_midi_selection_h__
-#include <list>
-#include "pbd/signals.h"
+#include "region_selection.h"
class MidiRegionView;
class MidiCutBuffer;
class RegionView;
-class MidiRegionSelection : public std::list<MidiRegionView*>
+class MidiRegionSelection : public RegionSelection
{
public:
MidiRegionSelection ();
- MidiRegionSelection (MidiRegionSelection const &);
+ MidiRegionSelection (const MidiRegionSelection&);
-private:
- void remove_it (RegionView *);
- PBD::ScopedConnection _death_connection;
+ MidiRegionSelection& operator= (const MidiRegionSelection&);
};
struct MidiNoteSelection : std::list<MidiCutBuffer*> {};
diff --git a/gtk2_ardour/note_base.cc b/gtk2_ardour/note_base.cc
index 7bc45a4b25..5e5d83e500 100644
--- a/gtk2_ardour/note_base.cc
+++ b/gtk2_ardour/note_base.cc
@@ -262,8 +262,8 @@ NoteBase::event_handler (GdkEvent* ev)
switch (ev->type) {
case GDK_ENTER_NOTIFY:
- set_mouse_fractions (ev);
_region.note_entered (this);
+ set_mouse_fractions (ev);
break;
case GDK_LEAVE_NOTIFY:
diff --git a/gtk2_ardour/note_select_dialog.h b/gtk2_ardour/note_select_dialog.h
index 607dbe1506..910728f2fb 100644
--- a/gtk2_ardour/note_select_dialog.h
+++ b/gtk2_ardour/note_select_dialog.h
@@ -20,6 +20,7 @@
#ifndef __gtk2_ardour_note_select_dialog_h__
#define __gtk2_ardour_note_select_dialog_h__
+#include <stdint.h>
#include "ardour_dialog.h"
#include "gtk_pianokeyboard.h"
diff --git a/gtk2_ardour/port_matrix.cc b/gtk2_ardour/port_matrix.cc
index bf9da544e6..b3b5a91ed3 100644
--- a/gtk2_ardour/port_matrix.cc
+++ b/gtk2_ardour/port_matrix.cc
@@ -1139,7 +1139,7 @@ PortMatrix::get_association (PortMatrixNode node) const
}
- /* NOTREACHED */
+ abort(); /* NOTREACHED */
return PortMatrixNode::NOT_ASSOCIATED;
}
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index a4d2b5dee2..0cb8441fd9 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -996,7 +996,8 @@ public:
PluginOptions (RCConfiguration* c)
: _rc_config (c)
, _display_plugin_scan_progress (_("Always Display Plugin Scan Progress"))
- , _discover_vst_on_start (_("Scan for new VST Plugins on Application Start"))
+ , _discover_vst_on_start (_("Scan for [new] VST Plugins on Application Start"))
+ , _discover_au_on_start (_("Scan for AudioUnit Plugins on Application Start"))
, _timeout_adjustment (0, 0, 3000, 50, 50)
, _timeout_slider (_timeout_adjustment)
{
@@ -1022,6 +1023,7 @@ public:
Gtkmm2ext::UI::instance()->set_tip (_display_plugin_scan_progress,
_("<b>When enabled</b> a popup window showing plugin scan progress is displayed for indexing (cache load) and discovery (detect new plugins)"));
+#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT)
_timeout_slider.set_digits (0);
_timeout_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &PluginOptions::timeout_changed));
@@ -1069,6 +1071,14 @@ public:
b->signal_clicked().connect (sigc::mem_fun (*this, &PluginOptions::edit_vst_path_clicked));
t->attach (*b, 1, 2, n, n+1, FILL); ++n;
#endif
+#endif // any VST
+
+#ifdef AUDIOUNIT_SUPPORT
+ t->attach (_discover_au_on_start, 0, 2, n, n+1); ++n;
+ _discover_au_on_start.signal_toggled().connect (sigc::mem_fun (*this, &PluginOptions::discover_au_on_start_toggled));
+ Gtkmm2ext::UI::instance()->set_tip (_discover_au_on_start,
+ _("<b>When enabled</b> Audio Unit Plugins are discovered on application start. When disabled AU plugins will only be available after triggering a 'Scan' manually. The first successful scan will enable AU auto-scan, Any crash during plugin discovery will disable it."));
+#endif
_box->pack_start (*t,true,true);
}
@@ -1086,18 +1096,24 @@ public:
int const x = _rc_config->get_vst_scan_timeout();
_timeout_adjustment.set_value (x);
}
+ else if (p == "discover-audio-units") {
+ bool const x = _rc_config->get_discover_audio_units();
+ _discover_au_on_start.set_active (x);
+ }
}
void set_state_from_config () {
parameter_changed ("show-plugin-scan-window");
parameter_changed ("discover-vst-on-start");
parameter_changed ("vst-scan-timeout");
+ parameter_changed ("discover-audio-units");
}
private:
RCConfiguration* _rc_config;
CheckButton _display_plugin_scan_progress;
CheckButton _discover_vst_on_start;
+ CheckButton _discover_au_on_start;
Adjustment _timeout_adjustment;
HScale _timeout_slider;
@@ -1111,6 +1127,11 @@ private:
_rc_config->set_discover_vst_on_start(x);
}
+ void discover_au_on_start_toggled () {
+ bool const x = _discover_au_on_start.get_active();
+ _rc_config->set_discover_audio_units(x);
+ }
+
void timeout_changed () {
int x = floor(_timeout_adjustment.get_value());
_rc_config->set_vst_scan_timeout(x);
@@ -2127,7 +2148,7 @@ RCOptionEditor::RCOptionEditor ()
/* VIDEO Timeline */
add_option (_("Video"), new VideoTimelineOptions (_rc_config));
-#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT)
+#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT || defined AUDIOUNIT_SUPPORT)
/* Plugin options (currrently VST only) */
add_option (_("Plugins"), new PluginOptions (_rc_config));
#endif
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index d4604b265d..fcdde48487 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -225,7 +225,9 @@ RegionView::~RegionView ()
bool
RegionView::canvas_group_event (GdkEvent* event)
{
- return trackview.editor().canvas_region_view_event (event, group, this);
+ if (!in_destructor) {
+ return trackview.editor().canvas_region_view_event (event, group, this);
+ }
}
void
diff --git a/gtk2_ardour/rhythm_ferret.cc b/gtk2_ardour/rhythm_ferret.cc
index ec5ebc93a1..f159331018 100644
--- a/gtk2_ardour/rhythm_ferret.cc
+++ b/gtk2_ardour/rhythm_ferret.cc
@@ -273,7 +273,7 @@ RhythmFerret::get_note_onset_function ()
fatal << string_compose (_("programming error: %1 (%2)"), X_("illegal note onset function string"), txt)
<< endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return -1;
}
diff --git a/gtk2_ardour/route_group_dialog.cc b/gtk2_ardour/route_group_dialog.cc
index 3addc1c598..e7e48f777e 100644
--- a/gtk2_ardour/route_group_dialog.cc
+++ b/gtk2_ardour/route_group_dialog.cc
@@ -207,7 +207,7 @@ RouteGroupDialog::do_run ()
msg.run ();
}
- /* NOTREACHED */
+ abort(); /* NOTREACHED */
return false;
}
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index 31c2eb1712..c4d49e40b9 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -2015,7 +2015,7 @@ RouteTimeAxisView::add_processor_automation_curve (boost::shared_ptr<Processor>
<< string_compose (X_("processor automation curve for %1:%2/%3/%4 not registered with track!"),
processor->name(), what.type(), (int) what.channel(), what.id() )
<< endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return;
}
@@ -2481,7 +2481,7 @@ RouteTimeAxisView::add_underlay (StreamView* v, bool /*update_xml*/)
if (find(_underlay_streams.begin(), _underlay_streams.end(), v) == _underlay_streams.end()) {
if (find(other._underlay_mirrors.begin(), other._underlay_mirrors.end(), this) != other._underlay_mirrors.end()) {
fatal << _("programming error: underlay reference pointer pairs are inconsistent!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
_underlay_streams.push_back(v);
@@ -2518,7 +2518,7 @@ RouteTimeAxisView::remove_underlay (StreamView* v)
if (gm == other._underlay_mirrors.end()) {
fatal << _("programming error: underlay reference pointer pairs are inconsistent!") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
v->foreach_regionview(sigc::mem_fun(*this, &RouteTimeAxisView::remove_ghost));
diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc
index 507245eb3d..1bdc0fe8b0 100644
--- a/gtk2_ardour/selection.cc
+++ b/gtk2_ardour/selection.cc
@@ -1002,7 +1002,7 @@ Selection::toggle (list<Selectable*> const & selectables)
fatal << _("programming error: ")
<< X_("unknown selectable type passed to Selection::toggle()")
<< endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
}
@@ -1056,7 +1056,7 @@ Selection::add (list<Selectable*> const & selectables)
fatal << _("programming error: ")
<< X_("unknown selectable type passed to Selection::add()")
<< endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
}
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index da29eb75a8..80ee165a84 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -113,7 +113,7 @@ importmode2string (ImportMode mode)
case ImportAsTapeTrack:
return _("as new tape tracks");
}
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return _("as new tracks");
}
@@ -1891,7 +1891,7 @@ SoundFileOmega::get_channel_disposition () const
if (x == disposition_map.end()) {
fatal << string_compose (_("programming error: %1 (%2)"), "unknown string for import disposition", str) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
return x->second;
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc
index ed759f3a7e..73e150549f 100644
--- a/gtk2_ardour/streamview.cc
+++ b/gtk2_ardour/streamview.cc
@@ -431,7 +431,7 @@ StreamView::update_rec_box ()
default:
fatal << string_compose (_("programming error: %1"), "illegal track mode") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return;
}
@@ -575,7 +575,7 @@ StreamView::child_height () const
return height / (_layers * 2 + 1);
}
- /* NOTREACHED */
+ abort(); /* NOTREACHED */
return height;
}
diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc
index af8699c001..58969a97f5 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -1312,7 +1312,7 @@ TimeAxisView::preset_height (Height h)
return button_height + extra_height;
}
- /* NOTREACHED */
+ abort(); /* NOTREACHED */
return 0;
}
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index c698263d57..5948cebddd 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -719,12 +719,10 @@ uint32_t
TimeAxisViewItem::fill_opacity () const
{
if (!rect_visible) {
- /* if the frame/rect is marked as invisible, then the
- * fill should be transparent. simplest: set
-
- * alpha/opacity to zero.
- */
- return 0;
+ /* if the frame/rect is marked as "invisible", then the
+ fill should be translucent.parent.
+ */
+ return 64;
}
if (_dragging) {
@@ -781,19 +779,19 @@ TimeAxisViewItem::set_frame_color()
return;
}
- frame->set_fill_color (get_fill_color());
+ frame->set_fill_color (get_fill_color());
set_frame_gradient ();
- if (!_recregion) {
+ if (!_recregion) {
uint32_t f = ARDOUR_UI::config()->get_TimeAxisFrame();
- if (!rect_visible) {
+ if (!rect_visible) {
/* make the frame outline be visible but rather transparent */
- f = UINT_RGBA_CHANGE_A (f, 64);
- }
+ f = UINT_RGBA_CHANGE_A (f, 64);
+ }
- frame->set_outline_color (f);
- }
+ frame->set_outline_color (f);
+ }
}
void
diff --git a/gtk2_ardour/time_selection.cc b/gtk2_ardour/time_selection.cc
index a0f33e8c99..8545a345eb 100644
--- a/gtk2_ardour/time_selection.cc
+++ b/gtk2_ardour/time_selection.cc
@@ -38,7 +38,7 @@ TimeSelection::operator[] (uint32_t which)
}
}
fatal << string_compose (_("programming error: request for non-existent audio range (%1)!"), which) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return *(new AudioRange(0,0,0)); /* keep the compiler happy; never called */
}
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index 171fc631d5..0f61656033 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -708,7 +708,7 @@ ARDOUR_UI_UTILS::get_icon_path (const char* cname, string icon_set, bool is_imag
if (!find_file (def, name, data_file_path)) {
fatal << string_compose (_("cannot find icon image for %1 using %2"), name, spath.to_string()) << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
}
}