Merge branch 'master' into windows
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
Download waf (http://code.google.com/p/waf/)
|
||||
Download autowaf (http://svn.drobilla.net/autowaf)
|
||||
autowaf.py is present in the tools directory of the Ardour source code.
|
||||
|
||||
From within the waf source tree, run:
|
||||
|
||||
|
||||
@@ -2194,8 +2194,13 @@ ARDOUR_UI::snapshot_session (bool switch_to_it)
|
||||
|
||||
prompter.set_name ("Prompter");
|
||||
prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
|
||||
prompter.set_title (_("Take Snapshot"));
|
||||
prompter.set_prompt (_("Name of new snapshot"));
|
||||
if (switch_to_it) {
|
||||
prompter.set_title (_("Save as..."));
|
||||
prompter.set_prompt (_("New session name"));
|
||||
} else {
|
||||
prompter.set_title (_("Take Snapshot"));
|
||||
prompter.set_prompt (_("Name of new snapshot"));
|
||||
}
|
||||
|
||||
if (!switch_to_it) {
|
||||
char timebuf[128];
|
||||
|
||||
@@ -197,7 +197,9 @@ ARDOUR_UI::set_session (Session *s)
|
||||
editor_meter_peak_display.hide();
|
||||
}
|
||||
|
||||
if (_session && _session->master_out()) {
|
||||
if (_session
|
||||
&& _session->master_out()
|
||||
&& _session->master_out()->n_outputs().n(DataType::AUDIO) > 0) {
|
||||
editor_meter = new LevelMeterHBox(_session);
|
||||
editor_meter->set_meter (_session->master_out()->shared_peak_meter().get());
|
||||
editor_meter->clear_meters();
|
||||
@@ -220,12 +222,17 @@ ARDOUR_UI::set_session (Session *s)
|
||||
editor_meter_peak_display.signal_button_release_event().connect (sigc::mem_fun(*this, &ARDOUR_UI::editor_meter_peak_button_release), false);
|
||||
|
||||
if (Config->get_show_editor_meter()) {
|
||||
transport_tearoff_hbox.pack_start (meter_box, false, false);
|
||||
transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false);
|
||||
meter_box.show();
|
||||
editor_meter_peak_display.show();
|
||||
} else {
|
||||
meter_box.hide();
|
||||
editor_meter_peak_display.hide();
|
||||
} else if (meter_box.get_parent()) {
|
||||
transport_tearoff_hbox.remove (meter_box);
|
||||
transport_tearoff_hbox.remove (editor_meter_peak_display);
|
||||
}
|
||||
} else if (meter_box.get_parent()) {
|
||||
transport_tearoff_hbox.remove (meter_box);
|
||||
transport_tearoff_hbox.remove (editor_meter_peak_display);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -402,11 +402,13 @@ ARDOUR_UI::parameter_changed (std::string p)
|
||||
} else if (p == "show-editor-meter") {
|
||||
bool show = Config->get_show_editor_meter();
|
||||
if (editor_meter && show) {
|
||||
transport_tearoff_hbox.pack_start (meter_box, false, false);
|
||||
transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false);
|
||||
meter_box.show();
|
||||
editor_meter_peak_display.show();
|
||||
} else if (editor_meter && !show) {
|
||||
meter_box.hide();
|
||||
editor_meter_peak_display.hide();
|
||||
} else if (editor_meter && !show && meter_box.get_parent()) {
|
||||
transport_tearoff_hbox.remove (meter_box);
|
||||
transport_tearoff_hbox.remove (editor_meter_peak_display);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -620,6 +620,9 @@ AudioClock::end_edit (bool modify)
|
||||
break;
|
||||
|
||||
case Frames:
|
||||
if (edit_string.length() < 1) {
|
||||
edit_string = pre_edit_string;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -215,9 +215,9 @@ ExportDialog::init_components ()
|
||||
}
|
||||
|
||||
void
|
||||
ExportDialog::notify_errors ()
|
||||
ExportDialog::notify_errors (bool force)
|
||||
{
|
||||
if (status->errors()) {
|
||||
if (force || status->errors()) {
|
||||
std::string txt = _("Export has been aborted due to an error!\nSee the Log for details.");
|
||||
Gtk::MessageDialog msg (txt, false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
|
||||
msg.run();
|
||||
@@ -303,9 +303,14 @@ ExportDialog::show_conflicting_files ()
|
||||
void
|
||||
ExportDialog::do_export ()
|
||||
{
|
||||
profile_manager->prepare_for_export ();
|
||||
handler->do_export ();
|
||||
show_progress ();
|
||||
try {
|
||||
profile_manager->prepare_for_export ();
|
||||
handler->do_export ();
|
||||
show_progress ();
|
||||
} catch(std::exception & e) {
|
||||
error << string_compose (_("Export initialization failed: %1"), e.what()) << endmsg;
|
||||
notify_errors(true);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -95,7 +95,7 @@ class ExportDialog : public ArdourDialog {
|
||||
|
||||
void expanded_changed();
|
||||
|
||||
void notify_errors ();
|
||||
void notify_errors (bool force = false);
|
||||
void close_dialog ();
|
||||
|
||||
void sync_with_manager ();
|
||||
|
||||
@@ -101,6 +101,7 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr
|
||||
|
||||
friend class MixerStrip;
|
||||
friend class MeterStrip;
|
||||
friend class RouteTimeAxisView;
|
||||
boost::shared_ptr<ARDOUR::Route> _route;
|
||||
boost::shared_ptr<ARDOUR::PeakMeter> _meter;
|
||||
boost::shared_ptr<ARDOUR::Amp> _amp;
|
||||
|
||||
@@ -177,6 +177,11 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
|
||||
namebx.set_size_request(18, 52);
|
||||
namebx.pack_start(name_label, true, false, 3);
|
||||
|
||||
mon_in_box.pack_start(*monitor_input_button, true, false);
|
||||
btnbox.pack_start(mon_in_box, false, false, 1);
|
||||
mon_disk_box.pack_start(*monitor_disk_button, true, false);
|
||||
btnbox.pack_start(mon_disk_box, false, false, 1);
|
||||
|
||||
recbox.pack_start(*rec_enable_button, true, false);
|
||||
btnbox.pack_start(recbox, false, false, 1);
|
||||
mutebox.pack_start(*mute_button, true, false);
|
||||
@@ -193,9 +198,17 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
|
||||
solo_button->set_corner_radius(2);
|
||||
solo_button->set_size_request(16, 16);
|
||||
|
||||
monitor_input_button->set_corner_radius(2);
|
||||
monitor_input_button->set_size_request(16, 16);
|
||||
|
||||
monitor_disk_button->set_corner_radius(2);
|
||||
monitor_disk_button->set_size_request(16, 16);
|
||||
|
||||
mutebox.set_size_request(16, 16);
|
||||
solobox.set_size_request(16, 16);
|
||||
recbox.set_size_request(16, 16);
|
||||
mon_in_box.set_size_request(16, 16);
|
||||
mon_disk_box.set_size_request(16, 16);
|
||||
spacer.set_size_request(-1,0);
|
||||
|
||||
update_button_box();
|
||||
@@ -232,6 +245,8 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
|
||||
mtr_container.show();
|
||||
mtr_hsep.show();
|
||||
nfo_vbox.show();
|
||||
monitor_input_button->show();
|
||||
monitor_disk_button->show();
|
||||
|
||||
_route->shared_peak_meter()->ConfigurationChanged.connect (
|
||||
route_connections, invalidator (*this), boost::bind (&MeterStrip::meter_configuration_changed, this, _1), gui_context()
|
||||
@@ -339,6 +354,8 @@ MeterStrip::set_button_names()
|
||||
}
|
||||
}
|
||||
|
||||
monitor_input_button->set_text (_("I"));
|
||||
monitor_disk_button->set_text (_("D"));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -651,6 +668,14 @@ MeterStrip::update_button_box ()
|
||||
} else {
|
||||
recbox.hide();
|
||||
}
|
||||
if (_session->config.get_show_monitor_on_meterbridge()) {
|
||||
height += 18 + 18;
|
||||
mon_in_box.show();
|
||||
mon_disk_box.show();
|
||||
} else {
|
||||
mon_in_box.hide();
|
||||
mon_disk_box.hide();
|
||||
}
|
||||
btnbox.set_size_request(16, height);
|
||||
check_resize();
|
||||
}
|
||||
@@ -684,6 +709,9 @@ MeterStrip::parameter_changed (std::string const & p)
|
||||
else if (p == "show-name-on-meterbridge") {
|
||||
update_name_box();
|
||||
}
|
||||
else if (p == "show-monitor-on-meterbridge") {
|
||||
update_button_box();
|
||||
}
|
||||
else if (p == "meterbridge-label-height") {
|
||||
queue_resize();
|
||||
}
|
||||
|
||||
@@ -108,6 +108,8 @@ class MeterStrip : public Gtk::VBox, public RouteUI
|
||||
Gtk::HBox mutebox;
|
||||
Gtk::HBox solobox;
|
||||
Gtk::HBox recbox;
|
||||
Gtk::HBox mon_in_box;
|
||||
Gtk::HBox mon_disk_box;
|
||||
|
||||
Gtk::Alignment meter_align;
|
||||
Gtk::Alignment peak_align;
|
||||
|
||||
@@ -2598,7 +2598,7 @@ ProcessorBox::generate_processor_title (boost::shared_ptr<PluginInsert> pi)
|
||||
if (owner) {
|
||||
return string_compose(_("%1: %2 (by %3)"), owner->name(), pi->name(), maker);
|
||||
} else {
|
||||
return string_compose(_("%2 (by %3)"), pi->name(), maker);
|
||||
return string_compose(_("%1 (by %2)"), pi->name(), maker);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2266,6 +2266,8 @@ RouteTimeAxisView::meter_changed ()
|
||||
if (_route && !no_redraw) {
|
||||
request_redraw ();
|
||||
}
|
||||
// reset peak when meter point changes
|
||||
gm.reset_peak_display();
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -318,6 +318,13 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
|
||||
sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_solo_on_meterbridge)
|
||||
));
|
||||
|
||||
add_option (_("Meterbridge"), new BoolOption (
|
||||
"show-monitor-on-meterbridge",
|
||||
_("Monitor Buttons"),
|
||||
sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_monitor_on_meterbridge),
|
||||
sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_monitor_on_meterbridge)
|
||||
));
|
||||
|
||||
add_option (_("Meterbridge"), new OptionEditorHeading (_("Name Labels")));
|
||||
|
||||
add_option (_("Meterbridge"), new BoolOption (
|
||||
|
||||
@@ -63,5 +63,6 @@ CONFIG_VARIABLE (bool, show_midi_on_meterbridge, "show-midi-on-meterbridge", tru
|
||||
CONFIG_VARIABLE (bool, show_rec_on_meterbridge, "show-rec-on-meterbridge", true)
|
||||
CONFIG_VARIABLE (bool, show_mute_on_meterbridge, "show-mute-on-meterbridge", false)
|
||||
CONFIG_VARIABLE (bool, show_solo_on_meterbridge, "show-solo-on-meterbridge", false)
|
||||
CONFIG_VARIABLE (bool, show_monitor_on_meterbridge, "show-monitor-on-meterbridge", false)
|
||||
CONFIG_VARIABLE (bool, show_name_on_meterbridge, "show-name-on-meterbridge", true)
|
||||
CONFIG_VARIABLE (uint32_t, meterbridge_label_height, "meterbridge-label-height", 0)
|
||||
|
||||
@@ -1509,7 +1509,7 @@ LV2Plugin::allocate_atom_event_buffers()
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE(DEBUG::LV2, string_compose("allocate %1 atom_ev_buffers\n", total_atom_buffers));
|
||||
DEBUG_TRACE(DEBUG::LV2, string_compose("allocate %1 atom_ev_buffers of %d bytes\n", total_atom_buffers, minimumSize));
|
||||
_atom_ev_buffers = (LV2_Evbuf**) malloc((total_atom_buffers + 1) * sizeof(LV2_Evbuf*));
|
||||
for (int i = 0; i < total_atom_buffers; ++i ) {
|
||||
_atom_ev_buffers[i] = lv2_evbuf_new(minimumSize, LV2_EVBUF_ATOM,
|
||||
@@ -1682,6 +1682,9 @@ LV2Plugin::connect_and_run(BufferSet& bufs,
|
||||
}
|
||||
} else if (!valid) {
|
||||
// Nothing we understand or care about, connect to scratch
|
||||
// see note for midi-buffer size above
|
||||
scratch_bufs.ensure_lv2_bufsize((flags & PORT_INPUT),
|
||||
0, _port_minimumSize[port_index]);
|
||||
_ev_buffers[port_index] = scratch_bufs.get_lv2_midi(
|
||||
(flags & PORT_INPUT), 0, (flags & PORT_EVENT));
|
||||
}
|
||||
|
||||
@@ -63,6 +63,7 @@ Processor::Processor(Session& session, const string& name)
|
||||
, _display_to_user (true)
|
||||
, _pre_fader (false)
|
||||
, _ui_pointer (0)
|
||||
, _owner (0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -52,25 +52,24 @@ SampleFormatConverter<float>::init (framecnt_t max_frames, int /* type */, int d
|
||||
|
||||
template <>
|
||||
void
|
||||
SampleFormatConverter<int32_t>::init (framecnt_t max_frames, int /*type*/, int data_width)
|
||||
SampleFormatConverter<int32_t>::init (framecnt_t max_frames, int type, int data_width)
|
||||
{
|
||||
if(throw_level (ThrowObject) && data_width < 24) {
|
||||
throw Exception (*this, "Trying to use SampleFormatConverter<int32_t> for data widths < 24");
|
||||
// GDither is broken with GDither32bit if the dither depth is bigger than 24
|
||||
if(throw_level (ThrowObject) && data_width > 24) {
|
||||
throw Exception (*this, "Trying to use SampleFormatConverter<int32_t> a data width > 24");
|
||||
}
|
||||
|
||||
init_common (max_frames);
|
||||
|
||||
// GDither is broken with GDither32bit if the dither depth
|
||||
// is bigger than 24, so lets just use that...
|
||||
dither = gdither_new (GDitherNone, channels, GDither32bit, 24);
|
||||
dither = gdither_new ((GDitherType) type, channels, GDither32bit, data_width);
|
||||
}
|
||||
|
||||
template <>
|
||||
void
|
||||
SampleFormatConverter<int16_t>::init (framecnt_t max_frames, int type, int data_width)
|
||||
{
|
||||
if (throw_level (ThrowObject) && data_width != 16) {
|
||||
throw Exception (*this, "Unsupported data width");
|
||||
if (throw_level (ThrowObject) && data_width > 16) {
|
||||
throw Exception (*this, boost::str(boost::format
|
||||
("Data width (%1) too large for int16_t")
|
||||
% data_width));
|
||||
}
|
||||
init_common (max_frames);
|
||||
dither = gdither_new ((GDitherType) type, channels, GDither16bit, data_width);
|
||||
@@ -80,8 +79,10 @@ template <>
|
||||
void
|
||||
SampleFormatConverter<uint8_t>::init (framecnt_t max_frames, int type, int data_width)
|
||||
{
|
||||
if (throw_level (ThrowObject) && data_width != 8) {
|
||||
throw Exception (*this, "Unsupported data width");
|
||||
if (throw_level (ThrowObject) && data_width > 8) {
|
||||
throw Exception (*this, boost::str(boost::format
|
||||
("Data width (%1) too large for uint8_t")
|
||||
% data_width));
|
||||
}
|
||||
init_common (max_frames);
|
||||
dither = gdither_new ((GDitherType) type, channels, GDither8bit, data_width);
|
||||
|
||||
Reference in New Issue
Block a user