#include <fstream>
#include <map>
+#include <boost/scoped_ptr.hpp>
+
#include <glibmm.h>
#include <gtkmm/messagedialog.h>
+
+#include "pbd/epa.h"
#include "pbd/xml++.h"
#ifdef __APPLE__
bool using_alsa = false;
bool using_coreaudio = false;
bool using_dummy = false;
+ bool using_ffado = false;
/* first, path to jackd */
/* now jackd arguments */
str = timeout_combo.get_active_text ();
+
if (str != _("Ignore")) {
+
double secs = 0;
uint32_t msecs;
secs = atof (str);
msecs = (uint32_t) floor (secs * 1000.0);
+
if (msecs > 0) {
cmd.push_back ("-t");
cmd.push_back (to_string (msecs, std::dec));
cmd.push_back ("-d");
driver = driver_combo.get_active_text ();
+
if (driver == X_("ALSA")) {
using_alsa = true;
cmd.push_back ("alsa");
} else if (driver == X_("FreeBoB")) {
cmd.push_back ("freebob");
} else if (driver == X_("FFADO")) {
+ using_ffado = true;
cmd.push_back ("firewire");
} else if ( driver == X_("Dummy")) {
using_dummy = true;
cmd.push_back ("-C");
cmd.push_back (input_device);
+
cmd.push_back ("-P");
cmd.push_back (output_device);
cmd.push_back ("-p");
cmd.push_back (period_size_combo.get_active_text());
+
+ if (using_alsa || using_ffado || using_coreaudio) {
+
+ double val = input_latency_adjustment.get_value();
+
+ if (val) {
+ cmd.push_back ("-I");
+ cmd.push_back (to_string ((uint32_t) val, std::dec));
+ }
+
+ val = output_latency_adjustment.get_value();
+
+ if (val) {
+ cmd.push_back ("-O");
+ cmd.push_back (to_string ((uint32_t) val, std::dec));
+ }
+ }
if (using_alsa) {
} else if (str == _("raw")) {
cmd.push_back ("-X raw");
}
-
- double val = input_latency_adjustment.get_value();
-
- if (val) {
- cmd.push_back ("-I");
- cmd.push_back (to_string ((uint32_t) val, std::dec));
- }
-
- val = output_latency_adjustment.get_value();
- if (val) {
- cmd.push_back ("-O");
- cmd.push_back (to_string ((uint32_t) val, std::dec));
- }
-
} else if (using_coreaudio) {
#ifdef __APPLE__
cmd.push_back ("-d");
cmd.push_back (device);
-
- double val = input_latency_adjustment.get_value();
-
- if (val) {
- cmd.push_back ("-I");
- cmd.push_back (to_string ((uint32_t) val, std::dec));
- }
-
- double val = output_latency_adjustment.get_value();
- if (val) {
- cmd.push_back ("-O");
- cmd.push_back (to_string ((uint32_t) val, std::dec));
- }
#endif
}
bool
EngineControl::engine_running ()
{
+ EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa ();
+ boost::scoped_ptr<EnvironmentalProtectionAgency> current_epa;
+
+ /* revert all environment settings back to whatever they were when ardour started
+ */
+
+ if (global_epa) {
+ current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */
+ global_epa->restore ();
+ }
+
jack_status_t status;
jack_client_t* c = jack_client_open ("ardourprobe", JackNoStartServer, &status);
XMLNode* child;
XMLProperty* prop = NULL;
bool using_dummy = false;
+ bool using_ffado = false;
int val;
string strval;
if ( (child = root.child ("driver"))){
prop = child->property("val");
+
if (prop && (prop->value() == "Dummy") ) {
using_dummy = true;
}
+ if (prop && (prop->value() == "FFADO") ) {
+ using_ffado = true;
+ }
+
}
clist = root.children();
if (!prop || prop->value().empty()) {
- if ((using_dummy && ( child->name() == "interface" || child->name() == "inputdevice" || child->name() == "outputdevice" )) ||
- child->name() == "timeout")
+ if (((using_dummy || using_ffado)
+ && ( child->name() == "interface"
+ || child->name() == "inputdevice"
+ || child->name() == "outputdevice"))
+ || child->name() == "timeout")
+ {
continue;
+ }
+
error << string_compose (_("AudioSetup value for %1 is missing data"), child->name()) << endmsg;
continue;
}