From: Miguel F. <mfr...@gm...> - 2004-05-26 17:42:38
|
On Wed, 26 May 2004 19:26:52 +0200, Michael Roitzsch <mr...@us...> wrote: > > if i rewire audio_post from ao_port1 to ao_port2, and audio_post > > doesn't maintain an open counter, it will try to close ao_port1 > > (status will surely tell the port is open) and then open ao_port2. now > > we have a playing stream with a closed ao port and an opened ao port > > with no stream attached! > > If that does happen, there is a bug in the implementation of status() in > ao_port1, because status() receives a stream and should only return true, > when the port has been opened by that stream. (The commentaries for status() > in audio_out.h and video_out.h reflect that.) ok, i didn't noticed that. in that case it should work, although we must take care of maintaining the stream values consistent for all post plugins. what if i first rewire post into stream1 1) stream1 -> audio_post -> ao_port1 and then rewire it to ao_port2 and no input (in two steps). 2) stream1 -> ao_port1 that is, ao_port1 is opened and audio_post closed. is it safe? won't audio_post try to close ao_port1? remember audio_post still has its output wired to the same ao_port1. 3) audio_post -> ao_port2 so audio_post won't neither try to close previous port (ao_port1) because status will return false for stream "none", nor open the ao_port2. right? > Our current implementation of the status() functions is wrong here, because > the NULL value for the stream has two meanings: > * no stream => status() should fail > * an anonymous stream => status() should succeed > I think an engine global define for an anonymous stream would be a good > solution. What do you think? sounds good. regards, Miguel |