On Tue, 2009-07-28 at 16:45 +0200, Lennart Poettering wrote: > On Tue, 28.07.09 15:54, Christopher James Halse Rogers ([email protected]) > wrote: > > > I'm (slowly) writing some mono/CLI bindings for pulseaudio, with the > > initial goal of writing or enabling a GNOME Do plugin for adjusting the > > volume and manipulating streams. Since that touches a wide swathe of > > the API anyway, I plan to go on and bind everything. > > Sounds good! > > > However, I don't understand what pa_operation is good for. As far as I > > can see, you can't wait on a pa_operation, so they're not particularly > > useful for completion notification - and every call I've looked at has > > some other method of signalling completion anyway. The docs also say > > that you can't depend on a cancel call working, so that also seems a > > little pointless, and you can't determine success or failure of a call > > from a pa_operation. > > The point of pa_operation is that you can have multiple requests > outstanding asynchronously. And of course, you *can* wait for > completion with them. Simply let the event loop running until the > operation obvject left the PA_OPERATION_RUNNING state.
So you'd be doing a
while(state == PA_OPERATION_RUNNING) {
iterate_mainloop ()
}
style loop. I hadn't really considered this. I was expecting a
callback, but this makes more sense.
>
> In some cases it makes sense to wait for completion of operations, in
> others it doesn't. In many situations it hence makes sense to do a
> loop as suggested above, in others it is fine to _unref the operation
> right after starting it, because you are not interested in the completion.
>
> The callback functions are bound to the pa_operation object. So you
> can cancel a callback by issuing pa_operation_cancel() and you won't
> get any callback for it anymore. What the docs say is that the cancel
> won't necessarily stop the operation itself, but it will still disable
> the callback. This is very often very important to use since it allows
> you to make sure to drop all userdata pointers to some specific object
> when you are destroying it.
Right. *This* part is definitely useful; the docs I read didn't make it
obvious that it'd definitely cancel the callback. I'll try to submit a
doc patch making this clear.
That's given me a clear idea of what pa_operation is about, and how I'll
need to bind it.
Thanks.
signature.asc
Description: This is a digitally signed message part
_______________________________________________ pulseaudio-discuss mailing list [email protected] https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss
