On Sat, Apr 13, 2013 at 9:34 AM, Dan MacDonald <allcoms(a)gmail.com> wrote:
This has been great to see the devs of Ardour,
qtractor and MusE all working
on the same problem simultaneously! I can't say I've seen that before so it
proves this plugin has peoples interest.
Indeed! Thanks for all the feedback and comments. VSTs on Linux are
still pretty experimental. Would be great if we all (host and plugin
devs) could try to help each others here to get things working.
As Kieran pointed out, I'm responsible for some parts of the plugin
backend in Glitch, so here are a few more comments and technical
details about previously discussed stuff:
---
Looks cool, but someone's understanding of the VST
spec is wrong. Probably
Ardour's.
This puppy calls audioMasterNeedIdle while being instantiated. Not cool.
Will fix A3 ASAP.
From my understanding "audioMasterNeedIdle"
should not directly result
into an idle call, but informs the host that the plugin
wants
"effIdle" calls. The specs are not really clear here though.
"effIdle"
also is NOT "effEditIdle" which drives the plugins GUIs, but a general
idle function which should be called even when the editor is not open.
We ended up removing the "audioMasterNeedIdle" call in Glitch 2.0.1
now, which got released a few hours ago, cause this obviously caused
more troubles than fixing anything.
We thought it's a good idea to call "audioMasterNeedIdle", to make
sure that we do get idle calls at all from the host. We do rely on
this on Linux, because we need to do some housekeeping in the UI
thread, but found no way to get constantly called in the UI thread
without relying on the host's idle calls. On Windows we do so via a
"SetTimer", on OSX via "InstallEventLoopTimer". On Linux there seems
to be no equivalent timer which gets called in the "XEvent" loop.
Juce based plugins workaround this by creating a new thread for just
this on Linux (a "message thread" in Juce terminology - if I remember
correctly) which does general UI thread housekeeping and also drives
the plugin GUI when the host does not call "effEditIdle". We wanted to
avoid creating a new thread for just this, cause such a thread will
then run concurrently with the host's UI thread which is a guarantee
for unnecessary overhead and of course in general a hassle to setup
and maintain.
This is also the reason why the Glitch GUI does not work in qtractor
and muse. qtractor and muse do not call "effEditIdle", even when the
plugin GUI is open. So if qtractor and muse could be patched to call
"effEditIdle" for all open plugin editors this would avoid a lot of
hassle here.
---
it crashes during shutdown
Tested this a lot during the last days on various systems, but could
not really replicate this here. Would be great if someone who could
easily replicate this before could test this again with the latest
Glitch 2.0.1 update. And If it still crashes, give us some more
details about the used system and host. A stack trace of such a crash
would help a lot too.
Greets,
Eduard / taktik /
renoise.com