[LV2] worker thread question

David Robillard d at drobilla.net
Sat Dec 29 14:19:32 PST 2012


On Sat, 2012-12-29 at 21:16 +0100, hermann meyer wrote:
[...]
> sadly I notice that you didn't understand the need of non-rt dsp 
> processing with user interaction in a plug-in. To bad :-(

Not really.  There is not much win from encoding that into the plugin
API vs. just having plugins that need to do it implement it with their
own threads internally, which is what they end up doing via libraries
anyway.

The worker extension is definitely not designed for audio processing.

Ports are accessed in run().

> I guess that you makes thinks more complicated then they really are. 
> That isn't what I understand under a Open spec. Your assumptions leads 
> to no way for implement what I need to make my plugs work with your 
> bless, so be it. I have tried to find a way for communication about that 
> with you, but it seems to me there isn't.
> Maybe you tried out my work, before you totally negate it.

The things you have been talking about have to do with communicating
control/messages with the plugin.  This has nothing to do with threaded
audio processing.  You are confusing issues.

> That it works stable, have nothing to do with luck.

You are violating the API and doing things that are ABSOLUTELY NOT
THREAD SAFE.  Period.  This is not a point of debate, this is a fact.

Your abuse of the worker in particular ABSOLUTELY WILL BREAK in hosts
that use one worker for several plugins, which they can and should do,
because that function IS NOT THREAD SAFE and you are calling it from THE
WRONG THREAD.

I GUARANTEE this will break in at least Ardour and Ingen, and likely
many other multi-plugin hosts.  I designed this API, and I implemented
it in these hosts, so you might want to take my word for it.

None of this has anything whatsoever to do with my "blessing".  Use
threads if you wish, but YOUR CODE IS SERIOUSLY BROKEN and VIOLATING
THREAD RULES WILL CAUSE VERY BAD THINGS TO HAPPEN.  There is a HUGE
difference between doing things in a "blessed" way and releasing
blatantly broken code like this that violates the contract between
plugins and hosts.  Releasing this code as-is after being told what you
have would be foolish and grossly incompetent.

-dr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.lv2plug.in/pipermail/devel-lv2plug.in/attachments/20121229/5987888e/attachment-0002.pgp>


More information about the Devel mailing list