diff -ru ../ecasound-2.5.2.orig/libecasound/plugins/audioio_jack_manager.cpp libecasound/plugins/audioio_jack_manager.cpp --- ../ecasound-2.5.2.orig/libecasound/plugins/audioio_jack_manager.cpp 2008-07-10 19:00:09.000000000 +0200 +++ libecasound/plugins/audioio_jack_manager.cpp 2008-09-07 23:14:38.000000000 +0200 @@ -30,6 +30,7 @@ #include /* std::count() */ #include #include +#include #include /* gettimeofday() */ #include /* ETIMEDOUT */ @@ -1417,8 +1418,13 @@ portdata->total_latency = 0; portdata->cb_buffer = new jack_default_audio_sample_t [cb_allocated_frames_rep]; + std::map::iterator it = port_numbers_rep.find(portprefix); + if (it == port_numbers_rep.end()) { + it = port_numbers_rep.insert(std::make_pair(portprefix, 0)).first; + } + string tport = portprefix + "_" + kvu_numtostr(++it->second); + if (node->aobj->io_mode() == AUDIO_IO::io_read) { - string tport = portprefix + "_" + kvu_numtostr(inports_rep.size() + 1); portdata->jackport = jack_port_register(client_repp, tport.c_str(), JACK_DEFAULT_AUDIO_TYPE, @@ -1427,7 +1433,6 @@ inports_rep.push_back(portdata); } else { - string tport = portprefix + "_" + kvu_numtostr(outports_rep.size() + 1); portdata->jackport = jack_port_register(client_repp, tport.c_str(), JACK_DEFAULT_AUDIO_TYPE, @@ -1710,6 +1715,8 @@ open_rep = false; + port_numbers_rep.clear(); + ECA_LOG_MSG(ECA_LOGGER::user_objects, "Succesfully closed JACK server connection."); diff -ru ../ecasound-2.5.2.orig/libecasound/plugins/audioio_jack_manager.h libecasound/plugins/audioio_jack_manager.h --- ../ecasound-2.5.2.orig/libecasound/plugins/audioio_jack_manager.h 2008-07-10 19:09:58.000000000 +0200 +++ libecasound/plugins/audioio_jack_manager.h 2008-09-07 22:58:36.000000000 +0200 @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -203,6 +204,8 @@ vector inports_rep; vector outports_rep; + std::map port_numbers_rep; /** highest port number used for each prefix */ + int jackslave_seekahead_rep; long int jackslave_seekahead_target_rep;