- std::string port, previousPort, deviceName;\r
- unsigned int nPorts = 0, nDevices = 0;\r
- ports = jack_get_ports( client, NULL, NULL, 0 );\r
- if ( ports ) {\r
- // Parse the port names up to the first colon (:).\r
- size_t iColon = 0;\r
- do {\r
- port = (char *) ports[ nPorts ];\r
- iColon = port.find(":");\r
- if ( iColon != std::string::npos ) {\r
- port = port.substr( 0, iColon );\r
- if ( port != previousPort ) {\r
- if ( nDevices == device ) deviceName = port;\r
- nDevices++;\r
- previousPort = port;\r
- }\r
+ if ( deviceName.size() == 0 ) {\r
+ std::string port, previousPort, deviceName;\r
+ unsigned int nPorts = 0, nDevices = 0;\r
+ ports = jack_get_ports( client, NULL, NULL, 0 );\r
+ if ( ports ) {\r
+ // Parse the port names up to the first colon (:).\r
+ size_t iColon = 0;\r
+ do {\r
+ port = (char *) ports[ nPorts ];\r
+ iColon = port.find(":");\r
+ if ( iColon != std::string::npos ) {\r
+ port = port.substr( 0, iColon );\r
+ if ( port != previousPort ) {\r
+ if ( nDevices == device ) deviceName = port;\r
+ nDevices++;\r
+ previousPort = port;\r
+ }\r
+ }\r
+ } while ( ports[++nPorts] );\r
+ free( ports );\r
+ }\r
+ if ( device >= nDevices ) {\r
+ errorText_ = "RtApiJack::probeDeviceOpen: device ID is invalid!";\r
+ return FAILURE;\r