[LAD] lv2 external UI -- was Re: LV2 Oscilloscope

Robin Gareus robin at gareus.org
Fri Oct 11 14:08:06 UTC 2013


On 10/11/2013 02:28 AM, Harry van Haaren wrote:
> On Thu, Oct 10, 2013 at 8:07 PM, Paul Davis <paul at linuxaudiosystems.com>wrote:
> 
>>
>> If a plugin uses one of them (the original) then Ardour will NOT delete
>> the UI instance when it is closed.
>> If a plugin uses the other (the version "forked"/"copied" by falktx) then
>> Ardour WILL delete the UI instance when it is closed.
>>
>> Both specifications state that the UI is defunct and no longer usable
>> after being closed:
>>
>>    * After this callback is called, UI is defunct. Host must call
>>    * LV2UI_Descriptor::cleanup(). If host wants to make the UI visible
>>    * again UI must be reinstantiated.
>>
>>
> Thanks for clearing that up: learning in progress on my behalf.
> Cheers, -Harry
> 

To clarify this a bit and fill in the details:

*All this is only relevant for external UI.*

1) URI: http://kxstudio.sourceforge.net/ns/lv2ext/external-ui

Ardour3.4 behaves according to spec, see the function documentation
of void (*ui_closed)(LV2UI_Controller controller); in the header file
http://kxstudio.sourceforge.net/ns/lv2ext/lv2_external_ui.h


2) URI: http://lv2plug.in/ns/extensions/ui#external

Ardour 2.X - 3.4 does not follow the spec regarding void (*ui_closed).
It just hides the window and shows it again.

The reason for Ardour doing (2) differently is that it was agreed on by
some developers that for many plugins re-initialization does not make
sense (re-init can be CPU intense). Those devs updated the
implementation but forgot or neglected to update the spec.

AFAIK it's also only Ardour that does not follow the spec. Other LV2
hosts that support lv2plug.in#externalui may implement it as synonym to
kxstudio#external-ui.

Otherwise the kxstudio#external-ui and lv2plugin#externalui are
identical (with just a minor cosmetic difference that kxstudio defines a
separate URI for the Host and plugin-widget).

In any case, external UI's should be avoided if possible, there are very
few valid use-cases. Just use a 'normal' LV2 UI or let the host generate
one.

ciao,
robin


More information about the Linux-audio-dev mailing list