Merge branch 'windows' of git.ardour.org:ardour/ardour into windows
[ardour.git] / gtk2_ardour / engine_dialog.cc
index f0121f5f421175e20ea1e3f064e1b82baaa8c77a..05cd9a661ed8bae19245759ae54fef19380a4431 100644 (file)
@@ -35,7 +35,7 @@
 #include <CoreFoundation/CFString.h>
 #include <sys/param.h>
 #include <mach-o/dyld.h>
-#else
+#elif !defined(__FreeBSD__)
 #include <alsa/asoundlib.h>
 #endif
 
@@ -83,7 +83,7 @@ EngineControl::EngineControl ()
          verbose_output_button (_("Verbose output")),
          start_button (_("Start")),
          stop_button (_("Stop")),
-#ifdef __APPLE__
+#ifdef __APPLE___
          basic_packer (5, 2),
          options_packer (4, 2),
          device_packer (4, 2)
@@ -139,7 +139,9 @@ EngineControl::EngineControl ()
 #ifdef __APPLE__
        strings.push_back (X_("CoreAudio"));
 #else
+#ifndef __FreeBSD__
        strings.push_back (X_("ALSA"));
+#endif
        strings.push_back (X_("OSS"));
        strings.push_back (X_("FreeBoB"));
        strings.push_back (X_("FFADO"));
@@ -165,8 +167,12 @@ EngineControl::EngineControl ()
 
        strings.clear ();
        strings.push_back (_("None"));
+#ifdef __APPLE__
+       strings.push_back (_("coremidi"));
+#else
        strings.push_back (_("seq"));
        strings.push_back (_("raw"));
+#endif
        set_popdown_strings (midi_driver_combo, strings);
        midi_driver_combo.set_active_text (strings.front ());
 
@@ -192,7 +198,7 @@ EngineControl::EngineControl ()
        basic_packer.attach (period_size_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
        row++;
 
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
        label = manage (left_aligned_label (_("Number of buffers:")));
        basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
        basic_packer.attach (periods_spinner, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
@@ -212,7 +218,7 @@ EngineControl::EngineControl ()
        row++;
        /* no audio mode with CoreAudio, its duplex or nuthin' */
 
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
        label = manage (left_aligned_label (_("Audio mode:")));
        basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
        basic_packer.attach (audio_mode_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
@@ -252,7 +258,7 @@ EngineControl::EngineControl ()
 
 #if PROVIDE_TOO_MANY_OPTIONS
 
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
        options_packer.attach (no_memory_lock_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
        ++row;
        options_packer.attach (unlock_memory_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
@@ -300,7 +306,7 @@ EngineControl::EngineControl ()
        options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
        ++row;
 
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
        label = manage (left_aligned_label (_("Dither:")));
        options_packer.attach (dither_mode_combo, 1, 2, row, row + 1, FILL|EXPAND, AttachOptions(0));
        options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0);
@@ -329,7 +335,7 @@ EngineControl::EngineControl ()
        device_packer.set_spacings (6);
        row = 0;
 
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
        label = manage (left_aligned_label (_("Input device:")));
        device_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0);
        device_packer.attach (input_device_combo, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0);
@@ -437,6 +443,12 @@ EngineControl::build_command_line (vector<string>& cmd)
 
        cmd.push_back ("-T"); // temporary */
 
+       /* setup coremidi before the driver, otherwise jack won't start */
+
+       if (midi_driver_combo.get_active_text() == _("coremidi")) {
+               cmd.push_back ("-X coremidi");
+       }
+
        /* next the driver */
 
        cmd.push_back ("-d");
@@ -468,11 +480,11 @@ EngineControl::build_command_line (vector<string>& cmd)
        if (!using_coreaudio) {
                str = audio_mode_combo.get_active_text();
 
-               if (str == _("Playback/Recording on 1 Device")) {
+               if (str == _("Playback/recording on 1 device")) {
 
                        /* relax */
 
-               } else if (str == _("Playback/Recording on 2 Devices")) {
+               } else if (str == _("Playback/recording on 2 devices")) {
 
                        string input_device = get_device_name (driver, input_device_combo.get_active_text());
                        string output_device = get_device_name (driver, output_device_combo.get_active_text());
@@ -525,7 +537,7 @@ EngineControl::build_command_line (vector<string>& cmd)
 
        if (using_alsa) {
 
-               if (audio_mode_combo.get_active_text() != _("Playback/Recording on 2 Devices")) {
+               if (audio_mode_combo.get_active_text() != _("Playback/recording on 2 devices")) {
 
                        string device = get_device_name (driver, interface_combo.get_active_text());
                        if (device.empty()) {
@@ -641,12 +653,11 @@ EngineControl::setup_engine ()
                error << string_compose (_("cannot open JACK rc file %1 to store parameters"), jackdrc_path) << endmsg;
                return -1;
        }
-       cerr << "JACK COMMAND: ";
+
        for (vector<string>::iterator i = args.begin(); i != args.end(); ++i) {
-               cerr << (*i) << ' ';
                jackdrc << (*i) << ' ';
        }
-       cerr << endl;
+
        jackdrc << endl;
        jackdrc.close ();
 
@@ -665,7 +676,7 @@ EngineControl::enumerate_devices (const string& driver)
                devices[driver] = enumerate_coreaudio_devices ();
 #endif
 
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
        } else if (driver == "ALSA") {
                devices[driver] = enumerate_alsa_devices ();
        } else if (driver == "FreeBOB") {
@@ -773,7 +784,7 @@ EngineControl::enumerate_coreaudio_devices ()
 
 
        if (devs.size() == 0) {
-               MessageDialog msg (_("\
+               MessageDialog msg (string_compose (_("\
 You do not have any audio devices capable of\n\
 simultaneous playback and recording.\n\n\
 Please use Applications -> Utilities -> Audio MIDI Setup\n\
@@ -783,8 +794,8 @@ Please send email to Apple and ask them why new Macs\n\
 have no duplex audio device.\n\n\
 Alternatively, if you really want just playback\n\
 or recording but not both, start JACK before running\n\
-Ardour and choose the relevant device then."
-                                          ),
+%1 and choose the relevant device then."
+                                                          ), PROGRAM_NAME),
                                   true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK);
                msg.set_title (_("No suitable audio devices"));
                msg.set_position (Gtk::WIN_POS_MOUSE);
@@ -796,6 +807,8 @@ Ardour and choose the relevant device then."
        return devs;
 }
 #else
+
+#if !defined(__FreeBSD__)
 vector<string>
 EngineControl::enumerate_alsa_devices ()
 {
@@ -839,6 +852,7 @@ EngineControl::enumerate_alsa_devices ()
 
        return devs;
 }
+#endif
 
 vector<string>
 EngineControl::enumerate_ffado_devices ()
@@ -938,7 +952,7 @@ void
 EngineControl::redisplay_latency ()
 {
        uint32_t rate = get_rate();
-#ifdef __APPLE_
+#if defined(__APPLE__) || defined(__FreeBSD__)
        float periods = 2;
 #else
        float periods = periods_adjustment.get_value();
@@ -957,10 +971,10 @@ EngineControl::audio_mode_changed ()
 {
        std::string str = audio_mode_combo.get_active_text();
 
-       if (str == _("Playback/Recording on 1 Device")) {
+       if (str == _("Playback/recording on 1 device")) {
                input_device_combo.set_sensitive (false);
                output_device_combo.set_sensitive (false);
-       } else if (str == _("Playback/Recording on 2 Devices")) {
+       } else if (str == _("Playback/recording on 2 devices")) {
                input_device_combo.set_sensitive (true);
                output_device_combo.set_sensitive (true);
        } else if (str == _("Playback only")) {