Revert my revision 6996, which was wrong. Sources need to stay around in the session...
[ardour.git] / libs / ardour / io.cc
index 9da9bf2a280ae81d378d8df17cb87ccc02e8da42..a41003cf8901ba8e285463466ef83b75d2fa121e 100644 (file)
 
 #include <fstream>
 #include <algorithm>
+#include <cmath>
+
 #include <unistd.h>
 #include <locale.h>
 #include <errno.h>
 
-
 #include <glibmm.h>
 #include <glibmm/thread.h>
 
 
 #include "i18n.h"
 
-#include <cmath>
-
-/*
-  A bug in OS X's cmath that causes isnan() and isinf() to be
-  "undeclared". the following works around that
-*/
-
-#if defined(__APPLE__) && defined(__MACH__)
-extern "C" int isnan (double);
-extern "C" int isinf (double);
-#endif
-
-#define BLOCK_PROCESS_CALLBACK() Glib::Mutex::Lock em (_session.engine().process_lock())
+#define BLOCK_PROCESS_CALLBACK() Glib::Mutex::Lock em (AudioEngine::instance()->process_lock())
 
 using namespace std;
 using namespace ARDOUR;
@@ -748,8 +737,12 @@ IO::get_port_counts_2X (XMLNode const & node, int /*version*/, ChanCount& n, boo
 
                if ((prop = node.property ("inputs")) != 0 && _direction == Input) {
                        n_audio = count (prop->value().begin(), prop->value().end(), '{');
+               } else if ((prop = node.property ("input-connection")) != 0 && _direction == Input) {
+                       n_audio = 1;
                } else if ((prop = node.property ("outputs")) != 0 && _direction == Output) {
                        n_audio = count (prop->value().begin(), prop->value().end(), '{');
+               } else if ((prop = node.property ("output-connection")) != 0 && _direction == Output) {
+                       n_audio = 2;
                }
        }
 
@@ -1092,9 +1085,7 @@ IO::set_name (const string& requested_name)
 
        /* replace all colons in the name. i wish we didn't have to do this */
 
-       if (replace_all (name, ":", "-")) {
-               warning << _("you cannot use colons to name objects with I/O connections") << endmsg;
-       }
+       replace_all (name, ":", "-"); 
 
        for (PortSet::iterator i = _ports.begin(); i != _ports.end(); ++i) {
                string current_name = i->name();