summaryrefslogtreecommitdiff
path: root/libs/ardour/globals.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2007-10-11 22:07:47 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2007-10-11 22:07:47 +0000
commitf7f9d6fdc40248b190ec9c6e1a886261d55777ae (patch)
tree080723e9dc35a66013b37acbafc67a6afa929302 /libs/ardour/globals.cc
parentaa1f736a651376534acaa2268b65d42a3786fff7 (diff)
merge from 2.0-ongoing by hand, minus key binding editor
git-svn-id: svn://localhost/ardour2/trunk@2539 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/globals.cc')
-rw-r--r--libs/ardour/globals.cc65
1 files changed, 28 insertions, 37 deletions
diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc
index 52be946f1e..c3eae5ad86 100644
--- a/libs/ardour/globals.cc
+++ b/libs/ardour/globals.cc
@@ -39,7 +39,6 @@
#include <pbd/fpu.h>
#include <midi++/port.h>
-#include <midi++/port_request.h>
#include <midi++/manager.h>
#include <midi++/mmc.h>
@@ -51,6 +50,7 @@
#include <ardour/audiosource.h>
#include <ardour/utils.h>
#include <ardour/session.h>
+#include <ardour/source_factory.h>
#include <ardour/control_protocol_manager.h>
#include <ardour/audioengine.h>
@@ -114,47 +114,25 @@ setup_osc ()
#endif
int
-ARDOUR::setup_midi (AudioEngine& engine)
+setup_midi ()
{
- std::map<string,Configuration::MidiPortDescriptor*>::iterator i;
- int nports;
-
- if ((nports = Config->midi_ports.size()) == 0) {
+ if (Config->midi_ports.size() == 0) {
warning << _("no MIDI ports specified: no MMC or MTC control possible") << endmsg;
return 0;
}
- MIDI::Manager::instance()->set_api_data(engine.jack());
-
- for (i = Config->midi_ports.begin(); i != Config->midi_ports.end(); ++i) {
- Configuration::MidiPortDescriptor* port_descriptor;
-
- port_descriptor = (*i).second;
-
- MIDI::PortRequest request (port_descriptor->device,
- port_descriptor->tag,
- port_descriptor->mode,
- port_descriptor->type);
-
- if (request.status != MIDI::PortRequest::OK) {
- error << string_compose(_("MIDI port specifications for \"%1\" are not understandable."), port_descriptor->tag) << endmsg;
- continue;
- }
-
- MIDI::Manager::instance()->add_port (request);
-
- nports++;
+ for (std::map<string,XMLNode>::iterator i = Config->midi_ports.begin(); i != Config->midi_ports.end(); ++i) {
+ MIDI::Manager::instance()->add_port (i->second);
}
MIDI::Port* first;
const MIDI::Manager::PortMap& ports = MIDI::Manager::instance()->get_midi_ports();
- first = ports.begin()->second;
- if (nports > 1) {
+ if (ports.size() > 1) {
- /* More than one port, so try using specific names for each port */
+ first = ports.begin()->second;
- map<string,Configuration::MidiPortDescriptor *>::iterator i;
+ /* More than one port, so try using specific names for each port */
if (Config->get_mmc_port_name() != N_("default")) {
default_mmc_port = MIDI::Manager::instance()->port (Config->get_mmc_port_name());
@@ -182,11 +160,13 @@ ARDOUR::setup_midi (AudioEngine& engine)
default_midi_port = first;
}
- } else {
+ } else if (ports.size() == 1) {
+
+ first = ports.begin()->second;
/* Only one port described, so use it for both MTC and MMC */
- default_mmc_port = MIDI::Manager::instance()->port ("");
+ default_mmc_port = first;
default_mtc_port = default_mmc_port;
default_midi_port = default_mmc_port;
}
@@ -209,15 +189,16 @@ ARDOUR::setup_midi (AudioEngine& engine)
return 0;
}
-
+
void
setup_hardware_optimization (bool try_optimization)
{
bool generic_mix_functions = true;
- FPU fpu;
if (try_optimization) {
+ FPU fpu;
+
#if defined (ARCH_X86) && defined (BUILD_SSE_OPTIMIZATIONS)
if (fpu.has_sse()) {
@@ -253,6 +234,10 @@ setup_hardware_optimization (bool try_optimization)
info << "Apple VecLib H/W specific optimizations in use" << endmsg;
}
#endif
+
+ /* consider FPU denormal handling to be "h/w optimization" */
+
+ setup_fpu ();
}
if (generic_mix_functions) {
@@ -265,9 +250,6 @@ setup_hardware_optimization (bool try_optimization)
info << "No H/W specific optimizations in use" << endmsg;
}
-
- setup_fpu ();
-
}
int
@@ -306,6 +288,8 @@ ARDOUR::init (bool use_vst, bool try_optimization)
setup_hardware_optimization (try_optimization);
+ SourceFactory::init ();
+
/* singleton - first object is "it" */
new PluginManager ();
@@ -387,6 +371,13 @@ ARDOUR::LocaleGuard::~LocaleGuard ()
void
ARDOUR::setup_fpu ()
{
+
+ if (getenv ("ARDOUR_RUNNING_UNDER_VALGRIND")) {
+ // valgrind doesn't understand this assembler stuff
+ // September 10th, 2007
+ return;
+ }
+
#if defined(ARCH_X86) && defined(USE_XMMINTRIN)
int MXCSR;