Hi,

I was trying to debug a deadlock while using gvim (with libcanberra+pulse output: https://qa.mandriva.com/show_bug.cgi?id=44925) I had reason to read the threaded loop docs.

The reference implementation shown here:
http://0pointer.de/lennart/projects/pulseaudio/doxygen/threaded_mainloop.html#basic_subsec

In my mind, the operation could theoretically be cancelled and this the _get_state() will return PA_OPERATION_CANCELLED.

In the example code, if this happens, the loop will spin and the main loop will never be unlocked.

This could be fixed by spinning when the state is PA_OPERATION_RUNNING rather when it is not PA_OPERATION_DONE (incidentally, there is a typo in the docs... it says OPERATION_RUNNING without the PA_ prefix...).

Anyway, any comments on this observation would be appreciated.

Col



--

Colin Guthrie
gmane(at)colin.guthr.ie
http://colin.guthr.ie/

Day Job:
  Tribalogic Limited [http://www.tribalogic.net/]
Open Source:
  Mandriva Linux Contributor [http://www.mandriva.com/]
  PulseAudio Hacker [http://www.pulseaudio.org/]
  Trac Hacker [http://trac.edgewall.org/]

_______________________________________________
pulseaudio-discuss mailing list
[email protected]
https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss

Reply via email to