diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2007-10-11 22:07:47 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2007-10-11 22:07:47 +0000 |
commit | f7f9d6fdc40248b190ec9c6e1a886261d55777ae (patch) | |
tree | 080723e9dc35a66013b37acbafc67a6afa929302 /libs/ardour/globals.cc | |
parent | aa1f736a651376534acaa2268b65d42a3786fff7 (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.cc | 65 |
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; |