Hello, I'm fresh to this list and don't know the protocols for suggesting changes, but I'm proposing the following change to module-jack-sink.c, or in the least for more people to test if the change causes problems with threading or otherwise. From what I could understand how the code works it should not since the module creates individual pa_asyncmsgq and new thread with every load to communicate with jack, etc..<div>
<br></div><div>The change is to simply make the module</div><div>PA_MODULE_LOAD_ONCE(FALSE);</div><div><br></div><div>I have tested patching and building the sink module and used it to create 3 sinks that are correctly registered as jack clients, connected several streams to PA and shuffled them between the sinks without crashes, hangs or interruptions. In every configuration the streams were beautifully mixed and relayed to jack via their current sinks and could be routed onward without problem. I have also tested loading the module multiple times without arguments, and PA seems to name them differently automatically. Unloading the module of a sink that has streams connected, switched the streams to default sink without interruption.</div>
<div><br></div><div>With the module-jack-source I make a very blunt assumption that it works similarly as the sink, but I am not able to test it properly with my setup at the moment, so I can not in my right mind to propose the change to it as is.</div>
<div><br></div><div>Basically, in light of what I described I don't see why there should be the "load once" restriction on the sink module, but I leave the ball to more experienced PA people to evaluate this, and whether this change should make it into deployment. Admittedly it's not the most common use case to connect multiple sinks to jack, but can be useful for combined audio work and advanced desktop usage scenarios to avoid some far uglier configurations for routing audio from a single pulseaudio aware application to targets in the jack world.</div>
<div><br></div><div>Juho-Petteri Yliuntinen</div><div>vaev at Freenode</div>