summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-03-14 20:18:05 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-03-14 20:18:05 +0000
commit11af3f8fdf1daff7a2eda1ce4b2c4926229e4bc0 (patch)
tree52cdd0e01775fbcb2b515749d7f4d3cd8baf4d4f
parentfb6565456e2070f088b2387923d78934ac8ab957 (diff)
enable icon-start-from-.ardour-file to work on OS X; properly install apple event handlers; change plugin add logic to avoid asking for stream counts before they would be configured; fix up new session dialog to not use manage(), and thus not throw away widgets when their page is hidden (by removal) in the tabbed browser
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3144 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--ardour_system_sae.rc51
-rw-r--r--gtk2_ardour/ardour-sae.menus5
-rw-r--r--gtk2_ardour/ardour_ui.cc36
-rw-r--r--gtk2_ardour/ardour_ui.h3
-rw-r--r--gtk2_ardour/ardour_ui_options.cc5
-rw-r--r--gtk2_ardour/cocoacarbon.mm73
-rw-r--r--gtk2_ardour/editor.cc4
-rw-r--r--gtk2_ardour/editor_actions.cc1
-rw-r--r--gtk2_ardour/export_dialog.cc9
-rw-r--r--gtk2_ardour/export_dialog.h2
-rw-r--r--gtk2_ardour/main.cc2
-rw-r--r--gtk2_ardour/new_session_dialog.cc125
-rw-r--r--libs/ardour/ardour/configuration_vars.h4
-rw-r--r--libs/ardour/audio_unit.cc11
-rw-r--r--libs/ardour/route.cc54
-rw-r--r--libs/ardour/session.cc6
-rw-r--r--libs/pbd/SConscript1
-rw-r--r--libs/pbd/misc.c21
-rw-r--r--libs/pbd/pbd/misc.h15
-rw-r--r--svn_revision.h2
-rwxr-xr-xtools/osx_packaging/osx_build9
21 files changed, 265 insertions, 174 deletions
diff --git a/ardour_system_sae.rc b/ardour_system_sae.rc
new file mode 100644
index 0000000000..551ee61fca
--- /dev/null
+++ b/ardour_system_sae.rc
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Ardour>
+ <MIDI-port tag="ardour" device="ardour" type="coremidi" mode="duplex"/>
+ <MIDI-port tag="mcu" device="ardour" type="coremidi" mode="duplex"/>
+ <Config>
+ <Option name="minimum-disk-io-bytes" value="262144"/>
+ <Option name="track-buffer-seconds" value="5.000000"/>
+ <Option name="mute-affects-pre-fader" value="yes"/>
+ <Option name="mute-affects-post-fader" value="yes"/>
+ <Option name="mute-affects-control-outs" value="yes"/>
+ <Option name="mute-affects-main-outs" value="yes"/>
+ <Option name="solo-latch" value="yes"/>
+ <Option name="mtc-port" value="ardour"/>
+ <Option name="mmc-port" value="ardour"/>
+ <Option name="midi-port" value="ardour"/>
+ <Option name="use-mmc" value="yes"/>
+ <Option name="send-mmc" value="yes"/>
+ <Option name="jack-time-master" value="yes"/>
+ <Option name="trace-midi-input" value="no"/>
+ <Option name="trace-midi-output" value="no"/>
+ <Option name="plugins-stop-with-transport" value="no"/>
+ <Option name="no-sw-monitoring" value="no"/>
+ <Option name="stop-recording-on-xrun" value="no"/>
+ <Option name="create-xrun-marker" value="yes"/>
+ <Option name="stop-at-session-end" value="no"/>
+ <Option name="auto-xfade" value="yes"/>
+ <Option name="crossfades-active" value="1"/>
+ <Option name="crossfades-visible" value="1"/>
+ <Option name="xfade-model" value="0"/>
+ <Option name="no-new-session-dialog" value="yes"/>
+ <Option name="timecode-source-is-synced" value="yes"/>
+ <Option name="auditioner-left-out" value="coreaudio:Built-in Audio:in1"/>
+ <Option name="auditioner-right-out" value="coreaudio:Built-in Audio:in2"/>
+ <Option name="quieten-at-speed" value="1.000000"/>
+ <Option name="use-vst" value="yes"/>
+ <Option name="use-tranzport" value="yes"/>
+ <Option name="disk-choice-space-threshold" value="57600000"/>
+ <Option name="destructive-xfade-msecs" value="20"/>
+ <Option name="periodic-safety-backups" value="1"/>
+ <Option name="periodic-safety-backup-interval" value="120"/>
+ <Option name="show-track-meters" value="1"/>
+ <Option name="default-narrow_ms" value="0"/>
+ <Option name="smpte-format" value="6"/>
+ <Option name="font-scale" value="102400"/>
+ </Config>
+ <extra>
+ <RulerVisibility smpte="yes" bbt="yes" frames="no" minsec="no" tempo="yes" meter="yes" marker="yes" rangemarker="no" transportmarker="yes" cdmarker="no"/>
+ <Keyboard edit-button="3" edit-modifier="4" delete-button="3" delete-modifier="1" snap-modifier="32"/>
+ </extra>
+</Ardour>
+
diff --git a/gtk2_ardour/ardour-sae.menus b/gtk2_ardour/ardour-sae.menus
index c5d3a26e27..0c84bcc114 100644
--- a/gtk2_ardour/ardour-sae.menus
+++ b/gtk2_ardour/ardour-sae.menus
@@ -279,6 +279,11 @@
<menuitem action='UseSoftwareMonitoring'/>
<menuitem action='UseExternalMonitoring'/>
</menu>
+ <menu action="SyncMenu">
+ <menuitem action='SendMMC'/>
+ <menuitem action='UseMMC'/>
+ <menuitem action='SendMTC'/>
+ </menu>
<menu action="TempoMenu">
<menuitem action='set-tempo-from-region'/>
<menuitem action='set-tempo-from-edit-range'/>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 8f543b5e8f..a465eed360 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -35,7 +35,6 @@
#include <pbd/error.h>
#include <pbd/basename.h>
#include <pbd/compose.h>
-#include <pbd/misc.h>
#include <pbd/pathscanner.h>
#include <pbd/failed_constructor.h>
#include <pbd/enumwriter.h>
@@ -2192,6 +2191,28 @@ ARDOUR_UI::loading_message (const std::string& msg)
flush_pending ();
}
+void
+ARDOUR_UI::idle_load (const Glib::ustring& path)
+{
+ if (session) {
+ if (Glib::file_test (path, Glib::FILE_TEST_IS_DIR)) {
+ /* /path/to/foo => /path/to/foo, foo */
+ load_session (path, basename_nosuffix (path));
+ } else {
+ /* /path/to/foo/foo.ardour => /path/to/foo, foo */
+ load_session (Glib::path_get_dirname (path), basename_nosuffix (path));
+ }
+ } else {
+ ARDOUR_COMMAND_LINE::session_name = path;
+ if (new_session_dialog) {
+ /* make it break out of Dialog::run() and
+ start again.
+ */
+ new_session_dialog->response (1);
+ }
+ }
+}
+
bool
ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be_new)
{
@@ -2199,8 +2220,10 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
Glib::ustring session_name;
Glib::ustring session_path;
Glib::ustring template_name;
+ int response;
- int response = Gtk::RESPONSE_NONE;
+ begin:
+ response = Gtk::RESPONSE_NONE;
if (!ARDOUR_COMMAND_LINE::session_name.empty()) {
@@ -2243,6 +2266,13 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
/* handle possible negative responses */
switch (response) {
+ case 1:
+ /* sent by idle_load, meaning restart the whole process again */
+ new_session_dialog->hide();
+ new_session_dialog->reset();
+ goto begin;
+ break;
+
case Gtk::RESPONSE_CANCEL:
case Gtk::RESPONSE_DELETE_EVENT:
if (!session) {
@@ -2421,7 +2451,6 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na
}
loading_message (_("Please wait while Ardour loads your session"));
- disable_screen_updates ();
try {
new_session = new Session (*engine, path, snap_name, mix_template);
@@ -2493,7 +2522,6 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na
session->set_clean ();
}
- enable_screen_updates ();
flush_pending ();
retval = 0;
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 93d1c58150..7de4c1e28b 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -115,7 +115,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI
void show_about ();
void hide_about ();
- int load_session (const Glib::ustring & path, const Glib::ustring& snapshot, Glib::ustring mix_template = Glib::ustring());
+ void idle_load (const Glib::ustring& path);
+ int load_session (const Glib::ustring& path, const Glib::ustring& snapshot, Glib::ustring mix_template = Glib::ustring());
bool session_loaded;
int build_session (const Glib::ustring& path, const Glib::ustring& snapshot,
uint32_t ctl_chns,
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index fcce64ec39..ab42743391 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -1056,10 +1056,13 @@ ARDOUR_UI::parameter_changed (const char* parameter_name)
} else if (PARAM_IS ("send-mtc")) {
ActionManager::map_some_state ("options", "SendMTC", &Configuration::get_send_mtc);
+ cerr << "Send MMC = " << Config->get_send_mmc() << endl;
} else if (PARAM_IS ("send-mmc")) {
+
ActionManager::map_some_state ("options", "SendMMC", &Configuration::get_send_mmc);
+ cerr << "Send MMC = " << Config->get_send_mmc() << endl;
} else if (PARAM_IS ("use-osc")) {
@@ -1075,6 +1078,8 @@ ARDOUR_UI::parameter_changed (const char* parameter_name)
} else if (PARAM_IS ("mmc-control")) {
ActionManager::map_some_state ("options", "UseMMC", &Configuration::get_mmc_control);
+ cerr << "Use MMC = " << Config->get_mmc_control() << endl;
+
} else if (PARAM_IS ("midi-feedback")) {
ActionManager::map_some_state ("options", "SendMIDIfeedback", &Configuration::get_midi_feedback);
} else if (PARAM_IS ("do-not-record-plugins")) {
diff --git a/gtk2_ardour/cocoacarbon.mm b/gtk2_ardour/cocoacarbon.mm
index 75141d34f6..75df481186 100644
--- a/gtk2_ardour/cocoacarbon.mm
+++ b/gtk2_ardour/cocoacarbon.mm
@@ -27,6 +27,7 @@
#include <gtkmm2ext/sync-menu.h>
#include <Appkit/Appkit.h>
+#include <gdk/gdkquartz.h>
sigc::signal<void,bool> ApplicationActivationChanged;
static EventHandlerRef application_event_handler_ref;
@@ -40,18 +41,51 @@ handle_reopen_application (const AppleEvent *inAppleEvent,
AppleEvent *outAppleEvent,
long inHandlerRefcon)
{
- cerr << "reopen app\n";
return noErr;
}
+
static OSErr
-handle_quit_application (const AppleEvent *inAppleEvent,
+handle_print_documents (const AppleEvent *inAppleEvent,
+ AppleEvent *outAppleEvent,
+ long inHandlerRefcon)
+{
+ return noErr;
+}
+
+
+static OSErr
+handle_open_documents (const AppleEvent *inAppleEvent,
+ AppleEvent *outAppleEvent,
+ long inHandlerRefcon)
+{
+ AEDescList docs;
+
+ if (AEGetParamDesc(inAppleEvent, keyDirectObject, typeAEList, &docs) == noErr) {
+ long n = 0;
+ AECountItems(&docs, &n);
+ UInt8 strBuffer[PATH_MAX+1];
+
+ /* ardour only opens 1 session at a time */
+
+ FSRef ref;
+
+ if (AEGetNthPtr(&docs, 1, typeFSRef, 0, 0, &ref, sizeof(ref), 0) == noErr) {
+ if (FSRefMakePath(&ref, strBuffer, sizeof(strBuffer)) == noErr) {
+ Glib::ustring utf8_path ((const char*) strBuffer);
+ ARDOUR_UI::instance()->idle_load (utf8_path);
+ }
+ }
+ }
+
+ return noErr;
+}
+
+static OSErr
+handle_open_application (const AppleEvent *inAppleEvent,
AppleEvent *outAppleEvent,
long inHandlerRefcon)
{
- cerr << "quit app\n";
- ARDOUR_UI::instance()->quit ();
-
return noErr;
}
@@ -79,12 +113,6 @@ application_event_handler (EventHandlerCallRef nextHandlerRef, EventRef event, v
void
ARDOUR_UI::platform_specific ()
{
- AEInstallEventHandler (kCoreEventClass, kAEReopenApplication,
- handle_reopen_application, 0, true);
-
- AEInstallEventHandler (kCoreEventClass, kAEQuitApplication,
- handle_quit_application, 0, true);
-
Gtk::Widget* widget = ActionManager::get_widget ("/ui/Main/Session/Quit");
if (widget) {
ige_mac_menu_set_quit_menu_item ((GtkMenuItem*) widget->gobj());
@@ -97,9 +125,26 @@ ARDOUR_UI::platform_specific ()
ige_mac_menu_add_app_menu_item (group, (GtkMenuItem*) widget->gobj(), 0);
}
widget = ActionManager::get_widget ("/ui/Main/Session/ToggleOptionsEditor");
+
if (widget) {
ige_mac_menu_add_app_menu_item (group, (GtkMenuItem*) widget->gobj(), 0);
}
+}
+
+void
+ARDOUR_UI::platform_setup ()
+{
+ AEInstallEventHandler (kCoreEventClass, kAEOpenDocuments,
+ handle_open_documents, 0, true);
+
+ AEInstallEventHandler (kCoreEventClass, kAEOpenApplication,
+ handle_open_application, 0, true);
+
+ AEInstallEventHandler (kCoreEventClass, kAEReopenApplication,
+ handle_reopen_application, 0, true);
+
+ AEInstallEventHandler (kCoreEventClass, kAEPrintDocuments,
+ handle_print_documents, 0, true);
EventTypeSpec applicationEventTypes[] = {
{kEventClassApplication, kEventAppActivated },
@@ -110,11 +155,6 @@ ARDOUR_UI::platform_specific ()
InstallApplicationEventHandler (ehUPP, sizeof(applicationEventTypes) / sizeof(EventTypeSpec),
applicationEventTypes, 0, &application_event_handler_ref);
-}
-
-void
-ARDOUR_UI::platform_setup ()
-{
if (!ARDOUR_COMMAND_LINE::finder_invoked_ardour) {
/* if invoked from the command line, make sure we're visible */
@@ -122,3 +162,4 @@ ARDOUR_UI::platform_setup ()
[NSApp activateIgnoringOtherApps:1];
}
}
+
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index d6c7911ed4..ae97df9011 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -589,6 +589,10 @@ Editor::Editor ()
region_list_display.set_size_request (100, -1);
region_list_display.set_name ("RegionListDisplay");
+ /* Try to prevent single mouse presses from initiating edits.
+ This relies on a hack in gtktreeview.c:gtk_treeview_button_press()
+ */
+ region_list_display.set_data ("mouse-edits-require-mod1", (gpointer) 0x1);
region_list_model = TreeStore::create (region_list_columns);
region_list_model->set_sort_func (0, mem_fun (*this, &Editor::region_list_sorter));
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index 70225d605b..fdcce41e68 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -81,6 +81,7 @@ Editor::register_actions ()
ActionManager::register_action (editor_actions, X_("SetPunchMenu"), _("Punch"));
ActionManager::register_action (editor_actions, X_("Solo"), _("Solo"));
ActionManager::register_action (editor_actions, X_("Subframes"), _("Subframes"));
+ ActionManager::register_action (editor_actions, X_("SyncMenu"), _("Sync"));
ActionManager::register_action (editor_actions, X_("TempoMenu"), _("Tempo"));
ActionManager::register_action (editor_actions, X_("Timecode"), _("Timecode fps"));
ActionManager::register_action (editor_actions, X_("TrackHeightMenu"), _("Height"));
diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc
index 84dd7cacc1..5fe5a56205 100644
--- a/gtk2_ardour/export_dialog.cc
+++ b/gtk2_ardour/export_dialog.cc
@@ -127,7 +127,7 @@ ExportDialog::ExportDialog(PublicEditor& e)
set_title (title.get_string());
set_wmclass (X_("ardour_export"), "Ardour");
set_name ("ExportWindow");
- set_events (get_events()|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK);
+ add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK);
spec.running = false;
@@ -388,13 +388,6 @@ ExportDialog::~ExportDialog()
{
}
-bool
-ExportDialog::on_event (GdkEvent* ev)
-{
- cerr << "ED event type " << ev->type << endl;
- return false;
-}
-
void
ExportDialog::do_not_allow_track_and_master_selection()
{
diff --git a/gtk2_ardour/export_dialog.h b/gtk2_ardour/export_dialog.h
index 94420a74ec..596467d3e1 100644
--- a/gtk2_ardour/export_dialog.h
+++ b/gtk2_ardour/export_dialog.h
@@ -47,8 +47,6 @@ class ExportDialog : public ArdourDialog
virtual Gtk::FileChooserAction browse_action() const { return Gtk::FILE_CHOOSER_ACTION_SAVE; }
- bool on_event (GdkEvent* ev);
-
protected:
ARDOUR::AudioExportSpecification spec;
Gtk::Frame file_frame;
diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc
index 707a4155a7..7f856adab6 100644
--- a/gtk2_ardour/main.cc
+++ b/gtk2_ardour/main.cc
@@ -225,7 +225,7 @@ int main (int argc, char* argv[])
#endif
{
vector<Glib::ustring> null_file_list;
-
+
#ifdef __APPLE__
fixup_bundle_environment ();
#endif
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index 604d486990..608fd5e646 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -37,6 +37,7 @@
#include <gtkmm2ext/window_title.h>
+using namespace Gtk;
using namespace Gtkmm2ext;
using namespace PBD;
@@ -47,14 +48,14 @@ NewSessionDialog::NewSessionDialog()
: ArdourDialog ("session control")
{
in_destructor = false;
- session_name_label = Gtk::manage(new class Gtk::Label(_("Name :")));
- m_name = Gtk::manage(new class Gtk::Entry());
+ session_name_label = new Gtk::Label(_("Name :"));
+ m_name = new Gtk::Entry();
m_name->set_text(ARDOUR_COMMAND_LINE::session_name);
- chan_count_label_1 = Gtk::manage(new class Gtk::Label(_("channels")));
- chan_count_label_2 = Gtk::manage(new class Gtk::Label(_("channels")));
- chan_count_label_3 = Gtk::manage(new class Gtk::Label(_("channels")));
- chan_count_label_4 = Gtk::manage(new class Gtk::Label(_("channels")));
+ chan_count_label_1 = new Gtk::Label(_("channels"));
+ chan_count_label_2 = new Gtk::Label(_("channels"));
+ chan_count_label_3 = new Gtk::Label(_("channels"));
+ chan_count_label_4 = new Gtk::Label(_("channels"));
chan_count_label_1->set_alignment(0,0.5);
chan_count_label_1->set_padding(0,0);
@@ -72,64 +73,64 @@ NewSessionDialog::NewSessionDialog()
chan_count_label_4->set_padding(0,0);
chan_count_label_4->set_line_wrap(false);
- bus_label = Gtk::manage(new class Gtk::Label(_("<b>Busses</b>")));
- input_label = Gtk::manage(new class Gtk::Label(_("<b>Inputs</b>")));
- output_label = Gtk::manage(new class Gtk::Label(_("<b>Outputs</b>")));
+ bus_label = new Gtk::Label(_("<b>Busses</b>"));
+ input_label = new Gtk::Label(_("<b>Inputs</b>"));
+ output_label = new Gtk::Label(_("<b>Outputs</b>"));
- session_location_label = Gtk::manage(new class Gtk::Label(_("Create Folder In :")));
- m_folder = Gtk::manage(new class Gtk::FileChooserButton(Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER));
- session_template_label = Gtk::manage(new class Gtk::Label(_("Template :")));
- m_template = Gtk::manage(new class Gtk::FileChooserButton());
- m_create_control_bus = Gtk::manage(new class Gtk::CheckButton(_("Create Monitor Bus")));
+ session_location_label = new Gtk::Label(_("Create Folder In :"));
+ m_folder = new Gtk::FileChooserButton(Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ session_template_label = new Gtk::Label(_("Template :"));
+ m_template = new Gtk::FileChooserButton();
+ m_create_control_bus = new Gtk::CheckButton(_("Create Monitor Bus"));
- Gtk::Adjustment *m_control_bus_channel_count_adj = Gtk::manage(new class Gtk::Adjustment(2, 0, 100, 1, 10, 10));
- m_control_bus_channel_count = Gtk::manage(new class Gtk::SpinButton(*m_control_bus_channel_count_adj, 1, 0));
+ Gtk::Adjustment *m_control_bus_channel_count_adj = Gtk::manage(new Gtk::Adjustment(2, 0, 100, 1, 10, 10));
+ m_control_bus_channel_count = new Gtk::SpinButton(*m_control_bus_channel_count_adj, 1, 0);
- Gtk::Adjustment *m_master_bus_channel_count_adj = Gtk::manage(new class Gtk::Adjustment(2, 0, 100, 1, 10, 10));
- m_master_bus_channel_count = Gtk::manage(new class Gtk::SpinButton(*m_master_bus_channel_count_adj, 1, 0));
- m_create_master_bus = Gtk::manage(new class Gtk::CheckButton(_("Create Master Bus")));
- advanced_table = Gtk::manage(new class Gtk::Table(2, 2, true));
- m_connect_inputs = Gtk::manage(new class Gtk::CheckButton(_("Automatically Connect to Physical Inputs")));
- m_limit_input_ports = Gtk::manage(new class Gtk::CheckButton(_("Use only")));
+ Gtk::Adjustment *m_master_bus_channel_count_adj = Gtk::manage(new Gtk::Adjustment(2, 0, 100, 1, 10, 10));
+ m_master_bus_channel_count = new Gtk::SpinButton(*m_master_bus_channel_count_adj, 1, 0);
+ m_create_master_bus = new Gtk::CheckButton(_("Create Master Bus"));
+ advanced_table = new Gtk::Table(2, 2, true);
+ m_connect_inputs = new Gtk::CheckButton(_("Automatically Connect to Physical Inputs"));
+ m_limit_input_ports = new Gtk::CheckButton(_("Use only"));
- Gtk::Adjustment *m_input_limit_count_adj = Gtk::manage(new class Gtk::Adjustment(1, 0, 100, 1, 10, 10));
- m_input_limit_count = Gtk::manage(new class Gtk::SpinButton(*m_input_limit_count_adj, 1, 0));
- input_port_limit_hbox = Gtk::manage(new class Gtk::HBox(false, 0));
- input_port_vbox = Gtk::manage(new class Gtk::VBox(false, 0));
- input_table = Gtk::manage(new class Gtk::Table(2, 2, false));
-
- bus_frame = Gtk::manage(new class Gtk::Frame());
- bus_table = Gtk::manage (new Gtk::Table (2, 3, false));
-
- input_frame = Gtk::manage(new class Gtk::Frame());
- m_connect_outputs = Gtk::manage(new class Gtk::CheckButton(_("Automatically Connect Outputs")));
- m_limit_output_ports = Gtk::manage(new class Gtk::CheckButton(_("Use only")));
+ Gtk::Adjustment *m_input_limit_count_adj = Gtk::manage(new Gtk::Adjustment(1, 0, 100, 1, 10, 10));
+ m_input_limit_count = new Gtk::SpinButton(*m_input_limit_count_adj, 1, 0);
+ input_port_limit_hbox = new Gtk::HBox(false, 0);
+ input_port_vbox = new Gtk::VBox(false, 0);
+ input_table = new Gtk::Table(2, 2, false);
+
+ bus_frame = new Gtk::Frame();
+ bus_table = new Gtk::Table (2, 3, false);
- Gtk::Adjustment *m_output_limit_count_adj = Gtk::manage(new class Gtk::Adjustment(1, 0, 100, 1, 10, 10));
- m_output_limit_count = Gtk::manage(new class Gtk::SpinButton(*m_output_limit_count_adj, 1, 0));
- output_port_limit_hbox = Gtk::manage(new class Gtk::HBox(false, 0));
- output_port_vbox = Gtk::manage(new class Gtk::VBox(false, 0));
+ input_frame = new Gtk::Frame();
+ m_connect_outputs = new Gtk::CheckButton(_("Automatically Connect Outputs"));
+ m_limit_output_ports = new Gtk::CheckButton(_("Use only"));
+
+ Gtk::Adjustment *m_output_limit_count_adj = Gtk::manage(new Gtk::Adjustment(1, 0, 100, 1, 10, 10));
+ m_output_limit_count = new Gtk::SpinButton(*m_output_limit_count_adj, 1, 0);
+ output_port_limit_hbox = new Gtk::HBox(false, 0);
+ output_port_vbox = new Gtk::VBox(false, 0);
Gtk::RadioButton::Group _RadioBGroup_m_connect_outputs_to_master;
- m_connect_outputs_to_master = Gtk::manage(new class Gtk::RadioButton(_RadioBGroup_m_connect_outputs_to_master, _("... to Master Bus")));
- m_connect_outputs_to_physical = Gtk::manage(new class Gtk::RadioButton(_RadioBGroup_m_connect_outputs_to_master, _("... to Physical Outputs")));
- output_conn_vbox = Gtk::manage(new class Gtk::VBox(false, 0));
- output_vbox = Gtk::manage(new class Gtk::VBox(false, 0));
-
- output_frame = Gtk::manage(new class Gtk::Frame());
- advanced_vbox = Gtk::manage(new class Gtk::VBox(false, 0));
- advanced_label = Gtk::manage(new class Gtk::Label(_("Advanced Options")));
- advanced_expander = Gtk::manage(new class Gtk::Expander());
- new_session_table = Gtk::manage(new class Gtk::Table(2, 2, false));
- m_open_filechooser = Gtk::manage(new class Gtk::FileChooserButton());
- open_session_hbox = Gtk::manage(new class Gtk::HBox(false, 0));
- m_treeview = Gtk::manage(new class Gtk::TreeView());
- recent_scrolledwindow = Gtk::manage(new class Gtk::ScrolledWindow());
-
- recent_sesion_label = Gtk::manage(new class Gtk::Label(_("Recent:")));
- recent_frame = Gtk::manage(new class Gtk::Frame());
- open_session_vbox = Gtk::manage(new class Gtk::VBox(false, 0));
- m_notebook = Gtk::manage(new class Gtk::Notebook());
+ m_connect_outputs_to_master = new Gtk::RadioButton(_RadioBGroup_m_connect_outputs_to_master, _("... to Master Bus"));
+ m_connect_outputs_to_physical = new Gtk::RadioButton(_RadioBGroup_m_connect_outputs_to_master, _("... to Physical Outputs"));
+ output_conn_vbox = new Gtk::VBox(false, 0);
+ output_vbox = new Gtk::VBox(false, 0);
+
+ output_frame = new Gtk::Frame();
+ advanced_vbox = new Gtk::VBox(false, 0);
+ advanced_label = new Gtk::Label(_("Advanced Options"));
+ advanced_expander = new Gtk::Expander();
+ new_session_table = new Gtk::Table(2, 2, false);
+ m_open_filechooser = new Gtk::FileChooserButton();
+ open_session_hbox = new Gtk::HBox(false, 0);
+ m_treeview = new Gtk::TreeView();
+ recent_scrolledwindow = new Gtk::ScrolledWindow();
+
+ recent_sesion_label = new Gtk::Label(_("Recent:"));
+ recent_frame = new Gtk::Frame();
+ open_session_vbox = new Gtk::VBox(false, 0);
+ m_notebook = new Gtk::Notebook();
session_name_label->set_alignment(0, 0.5);
session_name_label->set_padding(6,0);
session_name_label->set_line_wrap(false);
@@ -163,7 +164,7 @@ NewSessionDialog::NewSessionDialog()
m_master_bus_channel_count->set_numeric(true);
m_master_bus_channel_count->set_digits(0);
m_master_bus_channel_count->set_wrap(false);
- open_session_file_label = Gtk::manage(new class Gtk::Label(_("Browse:")));
+ open_session_file_label = new Gtk::Label(_("Browse:"));
open_session_file_label->set_alignment(0, 0.5);
m_create_master_bus->set_flags(Gtk::CAN_FOCUS);
m_create_master_bus->set_relief(Gtk::RELIEF_NORMAL);
@@ -172,7 +173,7 @@ NewSessionDialog::NewSessionDialog()
m_create_master_bus->set_border_width(0);
advanced_table->set_row_spacings(0);
advanced_table->set_col_spacings(0);
-
+
m_connect_inputs->set_flags(Gtk::CAN_FOCUS);
m_connect_inputs->set_relief(Gtk::RELIEF_NORMAL);
m_connect_inputs->set_mode(true);
@@ -191,7 +192,7 @@ NewSessionDialog::NewSessionDialog()
m_input_limit_count->set_wrap(false);
m_input_limit_count->set_sensitive(false);
- bus_hbox = Gtk::manage (new Gtk::HBox (false, 0));
+ bus_hbox = new Gtk::HBox (false, 0);
bus_hbox->pack_start (*bus_table, Gtk::PACK_SHRINK, 18);
bus_label->set_alignment(0, 0.5);
@@ -222,7 +223,7 @@ NewSessionDialog::NewSessionDialog()
input_table->set_col_spacings(0);
input_table->attach(*input_port_vbox, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 6, 6);
- input_hbox = Gtk::manage (new Gtk::HBox (false, 0));
+ input_hbox = new Gtk::HBox (false, 0);
input_hbox->pack_start (*input_table, Gtk::PACK_SHRINK, 18);
input_label->set_alignment(0, 0.5);
@@ -282,7 +283,7 @@ NewSessionDialog::NewSessionDialog()
output_frame->set_shadow_type(Gtk::SHADOW_NONE);
output_frame->set_label_align(0,0.5);
- output_hbox = Gtk::manage (new Gtk::HBox (false, 0));
+ output_hbox = new Gtk::HBox (false, 0);
output_hbox->pack_start (*output_vbox, Gtk::PACK_SHRINK, 18);
output_frame->add(*output_hbox);
diff --git a/libs/ardour/ardour/configuration_vars.h b/libs/ardour/ardour/configuration_vars.h
index 3a6c8399b0..e2fd95edd0 100644
--- a/libs/ardour/ardour/configuration_vars.h
+++ b/libs/ardour/ardour/configuration_vars.h
@@ -33,8 +33,8 @@ CONFIG_VARIABLE (std::string, midi_port_name, "midi-port-name", "default")
CONFIG_VARIABLE (bool, trace_midi_input, "trace-midi-input", false)
CONFIG_VARIABLE (bool, trace_midi_output, "trace-midi-output", false)
CONFIG_VARIABLE (bool, send_mtc, "send-mtc", false)
-CONFIG_VARIABLE (bool, send_mmc, "send-mmc", false)
-CONFIG_VARIABLE (bool, mmc_control, "mmc-control", false)
+CONFIG_VARIABLE (bool, send_mmc, "send-mmc", true)
+CONFIG_VARIABLE (bool, mmc_control, "mmc-control", true)
CONFIG_VARIABLE (bool, midi_feedback, "midi-feedback", false)
CONFIG_VARIABLE (uint8_t, mmc_receive_device_id, "mmc-receive-device-id", 0)
CONFIG_VARIABLE (uint8_t, mmc_send_device_id, "mmc-send-device-id", 0x7f)
diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc
index df4ff59be5..93cab504f6 100644
--- a/libs/ardour/audio_unit.cc
+++ b/libs/ardour/audio_unit.cc
@@ -93,12 +93,10 @@ AUPlugin::AUPlugin (AudioEngine& engine, Session& session, boost::shared_ptr<CAC
streamFormat.mSampleRate = session.frame_rate();
streamFormat.mFormatID = kAudioFormatLinearPCM;
streamFormat.mFormatFlags = kAudioFormatFlagIsFloat|kAudioFormatFlagIsPacked|kAudioFormatFlagIsNonInterleaved;
+
#ifdef __LITTLE_ENDIAN__
- /* relax, for now */
+ /* relax */
#else
- /* it is ridiculous that this flag is needed when its
- opposite flag is not.
- */
streamFormat.mFormatFlags |= kAudioFormatFlagIsBigEndian;
#endif
@@ -329,7 +327,7 @@ AUPlugin::activate ()
if (!initialized) {
OSErr err;
if ((err = unit->Initialize()) != noErr) {
- error << string_compose (_("AUPlugin: cannot initialize plugin (err = %1)"), err) << endmsg;
+ error << string_compose (_("AUPlugin: %1 cannot initialize plugin (err = %2)"), name(), err) << endmsg;
} else {
frames_processed = 0;
initialized = true;
@@ -454,9 +452,10 @@ uint32_t
AUPlugin::output_streams() const
{
if (!(format_set & 0x2)) {
- warning << _("AUPlugin: output_streams() called without any format set!") << endmsg;
+ warning << string_compose (_("AUPlugin: %1 output_streams() called without any format set!"), name()) << endmsg;
return 1;
}
+
return streamFormat.mChannelsPerFrame;
}
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 1b26dd8c7f..f63524032d 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -861,6 +861,14 @@ Route::add_redirect (boost::shared_ptr<Redirect> redirect, void *src, uint32_t*
boost::shared_ptr<PluginInsert> pi;
boost::shared_ptr<PortInsert> porti;
+ _redirects.push_back (redirect);
+
+ if (_reset_plugin_counts (err_streams)) {
+ _redirects.pop_back ();
+ _reset_plugin_counts (0); // it worked before we tried to add it ...
+ return -1;
+ }
+
uint32_t potential_max_streams = 0;
if ((pi = boost::dynamic_pointer_cast<PluginInsert>(redirect)) != 0) {
@@ -901,14 +909,6 @@ Route::add_redirect (boost::shared_ptr<Redirect> redirect, void *src, uint32_t*
_max_peak_power.push_back(-INFINITY);
}
- _redirects.push_back (redirect);
-
- if (_reset_plugin_counts (err_streams)) {
- _redirects.pop_back ();
- _reset_plugin_counts (0); // it worked before we tried to add it ...
- return -1;
- }
-
redirect->activate ();
redirect->active_changed.connect (mem_fun (*this, &Route::redirect_active_proxy));
}
@@ -1129,14 +1129,14 @@ int
Route::_reset_plugin_counts (uint32_t* err_streams)
{
RedirectList::iterator r;
- uint32_t i_cnt;
- uint32_t s_cnt;
+ uint32_t insert_cnt = 0;
+ uint32_t send_cnt = 0;
map<Placement,list<InsertCount> > insert_map;
+ RedirectList::iterator prev;
nframes_t initial_streams;
+ int ret = -1;
redirect_max_outs = 0;
- i_cnt = 0;
- s_cnt = 0;
/* divide inserts up by placement so we get the signal flow
properly modelled. we need to do this because the _redirects
@@ -1148,14 +1148,8 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
boost::shared_ptr<Insert> insert;
- /* do this here in case we bomb out before we get to the end of
- this function.
- */
-
- redirect_max_outs = max ((*r)->output_streams (), redirect_max_outs);
-
if ((insert = boost::dynamic_pointer_cast<Insert>(*r)) != 0) {
- ++i_cnt;
+ ++insert_cnt;
insert_map[insert->placement()].push_back (InsertCount (insert));
/* reset plugin counts back to one for now so
@@ -1170,15 +1164,16 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
}
} else if (boost::dynamic_pointer_cast<Send> (*r) != 0) {
- ++s_cnt;
+ ++send_cnt;
}
}
- if (i_cnt == 0) {
- if (s_cnt) {
+ if (insert_cnt == 0) {
+ if (send_cnt) {
goto recompute;
} else {
- return 0;
+ ret = 0;
+ goto streamcount;
}
}
@@ -1189,7 +1184,7 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
/* A: PreFader */
if (check_some_plugin_counts (insert_map[PreFader], n_inputs (), err_streams)) {
- return -1;
+ goto streamcount;
}
/* figure out the streams that will feed into PreFader */
@@ -1204,7 +1199,7 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
/* B: PostFader */
if (check_some_plugin_counts (insert_map[PostFader], initial_streams, err_streams)) {
- return -1;
+ goto streamcount;
}
/* OK, everything can be set up correctly, so lets do it */
@@ -1217,7 +1212,7 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
recompute:
redirect_max_outs = 0;
- RedirectList::iterator prev = _redirects.end();
+ prev = _redirects.end();
for (r = _redirects.begin(); r != _redirects.end(); prev = r, ++r) {
boost::shared_ptr<Send> s;
@@ -1241,8 +1236,13 @@ Route::_reset_plugin_counts (uint32_t* err_streams)
}
/* we're done */
-
return 0;
+
+ streamcount:
+ for (r = _redirects.begin(); r != _redirects.end(); ++r) {
+ redirect_max_outs = max ((*r)->output_streams (), redirect_max_outs);
+ }
+ return ret;
}
int32_t
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index a084a16574..d53291b178 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -578,16 +578,10 @@ Session::destroy ()
tmp = i;
++tmp;
- cerr << "Drop refs to " << i->second->name() << endl;
-
i->second->drop_references ();
-
- cerr << "move on\n";
i = tmp;
}
-
- cerr << "clear audio sources\n";
audio_sources.clear ();
#ifdef TRACK_DESTRUCTION
diff --git a/libs/pbd/SConscript b/libs/pbd/SConscript
index 9e09d5513e..a0065f09bd 100644
--- a/libs/pbd/SConscript
+++ b/libs/pbd/SConscript
@@ -29,7 +29,6 @@ dmalloc.cc
error.cc
fpu.cc
id.cc
-misc.c
mountpoint.cc
path.cc
pathscanner.cc
diff --git a/libs/pbd/misc.c b/libs/pbd/misc.c
deleted file mode 100644
index 34e5888687..0000000000
--- a/libs/pbd/misc.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <pbd/misc.h>
-
-#ifdef GTKOSX
-#include <AppKit/AppKit.h>
-#endif
-
-void
-disable_screen_updates ()
-{
-#ifdef GTKOSX
- // NSDisableScreenUpdates ();
-#endif
-}
-
-void
-enable_screen_updates ()
-{
-#ifdef GTKOSX
- // NSEnableScreenUpdates();
-#endif
-}
diff --git a/libs/pbd/pbd/misc.h b/libs/pbd/pbd/misc.h
deleted file mode 100644
index 306c00683e..0000000000
--- a/libs/pbd/pbd/misc.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __pbd_misc_h__
-#define __pbd_misc_h__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- void disable_screen_updates ();
- void enable_screen_updates ();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __pbd_misc_h__ */
diff --git a/svn_revision.h b/svn_revision.h
index c0b5a7cdc8..b7d9af4dc7 100644
--- a/svn_revision.h
+++ b/svn_revision.h
@@ -1,4 +1,4 @@
#ifndef __ardour_svn_revision_h__
#define __ardour_svn_revision_h__
-static const char* ardour_svn_revision = "3117";
+static const char* ardour_svn_revision = "3142";
#endif
diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build
index d84d1ca030..1160a36459 100755
--- a/tools/osx_packaging/osx_build
+++ b/tools/osx_packaging/osx_build
@@ -21,6 +21,7 @@ while [ $# -gt 0 ] ; do
--sae) SAE=1 ; WITH_JACK=1; WITH_LADSPA=1; STRIP= ; shift ;;
--public) SAE= ; WITH_JACK=; WITH_LADSPA=1; STRIP= ; shift ;;
--allinone) SAE= ; WITH_JACK=1; WITH_LADSPA=1; STRIP= ; shift ;;
+ --test) SAE= ; WITH_JACK=; WITH_LADSPA=; STRIP= ; shift ;;
#
# specific build flags
@@ -204,7 +205,13 @@ cp ../../gtk2_ardour/mnemonic-us.bindings $Resources
cp ../../gtk2_ardour/SAE-de.bindings $Resources
cp ../../gtk2_ardour/ardour.menus $Resources
cp ../../gtk2_ardour/ardour-sae.menus $Resources
-cp ../../ardour_system.rc $Resources
+if test x$SAE != x ; then
+ cp ../../ardour_system_sae.rc $Resources/ardour_system.rc
+ echo cp ../../ardour_system_sae.rc $Resources/ardour_system.rc
+else
+ cp ../../ardour_system.rc $Resources/ardour_system.rc
+ echo FOO cp ../../ardour_system.rc $Resources/ardour_system.rc
+fi
cp ../../gtk2_ardour/ardour2_ui_sae.conf $Resources
cp ../../gtk2_ardour/ardour2_ui_default.conf $Resources
cp ../../gtk2_ardour/ardour2_ui_light.rc $Resources