On Sun, 2015-12-27 at 20:34 +0200, Ahmed S. Darwish wrote: > On Sun, Dec 27, 2015 at 02:10:47PM +0200, Tanu Kaskinen wrote: > > On Sat, 2015-12-26 at 21:51 +0200, Ahmed S. Darwish wrote: > > > I've implemented this by vacuuming upon receiving CORK_PLAYBACK_STREAM > > > or CORK_RECORD_STREAM. Hopefully this is the right approach. > > > > Do you take into account the case where there are two streams and only > > one of them stops? I think vacuuming should be done only when the state > > changes from "some streams active" to "no streams active". > > Hmm, my knowledge is still limited in this area. I thought > there's a one-to-one relation between a per-client connection > and a stream. > > After some thinking, I guess this can happen when one client > creates both a playback stream and a recording one? A client can have any number of streams over the same connection. For example, pavucontrol creates many capture streams, since it has many volume meters. > > In addition to corking, the active -> not active transition can also > > happen when the client tears down a stream. > > > > PA_COMMAND_FLUSH_{PLAYBACK,RECORDING}`_STREAM? PA_COMMAND_DELETE_{PLAYBACK,RECORD}_STREAM and PA_COMMAND_FINISH_UPLOAD_STREAM. In addition to those, streams may also die when the server kills them. -- Tanu