On 07.03.24 00:03, ichthyo wrote:
...the pull-request is out, featuring the foundation and the change of the
Effect-UI, using push-updates through the newly developed GuiDataExchange.

We have identified two known Bugs, which did exist already on the previous
release v2.3.2, but are largely amplified by the rework and are much more
noticeable.

Hi Will and the other Yoshimi-devs,

the "guiconnect" feature was landed on master at 7.3.24.
Using it in practice revealed a bug when loading another Instrument,
and this bug was fixed by performing a part-switch explicitly instead
of implicitly in the GUI.

There are some related issues, which were discovered or amplified by
this rework of the Core-GUI connection. And possibly some further
Clean-up work can be done in the Effect section of SynthEngine.


To pick up this thread, I have investigated problems when restoring
multiple Instances on start-up. That is, using the Config setting
"Enable Auto Instance", represented as `Config::autoInstance`

Doing so causes a time-out on the initial "bootstrap" message sent
up into UI, and thus a complete failure of UI startup; the message
would be processed about 600ms later in this case (which is above
an implicit tiemout level of 500ms, which I've built into the new
connection scheme to weed out stale messages).

I tend to resist the temptation just to weaken the timeout level.
Rather, I am looking into what causes that delay. Starting those
instances was somehow hooked into the existing logic of main, and
I am under the impression that the second instance start-up is
triggered at the begin of the event loop and blocks the completion
of the initial instance's start-up. This is caused by a function
newBlock(), which is activated there only when autoInstance = true.

So why can the regular code to start up new instances not handle
this case as well? Why does this regular code have to use some
greasy magic bit set trickery with global variables, which is
hard to understand for the reader, instead of just processing
a queue of instances in plain daylight?

And is there any real reason why this newBlock() function was
moved /before/ the regular event processing, while in normal
operation, the start-up of a new instance can happen just
fine from within the regular event processing?

-- Hermann




_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel

Reply via email to