[pulseaudio-discuss] pa_stream_readable_size() returns 4294967295

Tanu Kaskinen tanuk at iki.fi
Thu Dec 10 17:27:54 PST 2009


to, 2009-12-10 kello 21:20 +0100, Mads Kiilerich kirjoitti:
> With reference to 
> http://0pointer.de/lennart/projects/pulseaudio/doxygen/stream_8h.html#aa2e5ff19aa36b90471c34badbdfdf345 
> and using pulseaudio-0.9.15-17.fc11.i586:
> 
> My experiments shows that pa_stream_readable_size() sometimes returns 
> 4294967295 = 0xffffffff. That possibility is not described in the 
> documentation, AFAICS.
> 
> However, I have only seen that happen when not PA_STREAM_READY. Is the 
> ready state a precondition for calling this function? How should race 
> conditions be avoided?

Yes, the READY state is a precondition.

What kind of race conditions do you mean? Do you mean that how are you
supposed to know prior to calling pa_stream_readable_size() whether the
stream is still in READY state? Are you not able to reliably track the
state with a state change callback (pa_set_state_callback)?

I'm not terribly familiar with the client library details, so I'm not
saying that there are no races. But since the library is
single-threaded, I believe you can use the state callback to always have
the same knowledge of the state as the library itself.

> It would have matched my expectations better if the type was ssize_t and 
> the value thus -1.

Pulseaudio uses ((size_t) -1) in error cases in many places. I guess
it's at least partially a matter of taste...

> Are there any other special values?

I didn't write the code, but I'm quite sure that the answer is no.

> Have I misunderstood something? Or is it a bug in pa? Or some 
> unfortunate artificats for which documentation patches would be appreciated?

My personal opinion is that if you have to ask on the mailing list, then
most likely there's a problem in the documentation. Documentation
patches are very welcome!

> Do the same apply to pa_stream_writable_size?

Yes.

-- 
Tanu Kaskinen




More information about the pulseaudio-discuss mailing list