The default build is debuggable (unless you explicitly use ./waf configure --optimize ...), and the easiest is to run it in gdb directly from the source-tree: ./gtk2_ardour/ardbg
I don’t know nor use qtcreator, so I cannot help you with that end.
PS. For debugging I also recommend to use Audio-System: Dummy. That can halt and allows single-stepping without any interference of realtime audio threads.
What I’m looking at now that seems suspicious is that the following two functions keep alternatively hitting the breakpoint I set at the start of their function:
This type of “view size” function seems like something that should only happen like once at start and then whenever use modifies the view size. Not continuously.
And the _req_width is always 1140 and _req_height is always 660. So the view size is not actually changing…
I’m noticing the CHOW plugin doesn’t allow me to resize it with the mouse by putting mouse near the corner. But the SonoBus plugin does allow me to resize it with the mouse.
So maybe I should try another JUCE plugin that has resize ability, and see if it is affected as well, so I can determine if this problem is SonoBus-specific or rather happens with any resizable JUCE VST3 plugin. I’m not familiar with VST3 plguins, so I will just try installing a few to find one.
Thanks for helping track this issue down, and confirming the fix.
Right now it is still unclear what the best way forward is. GUIs using Steinberg’s SDK directly do not have this issue and it seems to be a JUCE issue.
It could also be possible to prevent these recursions in Ardour by checking if the size has actually changed. Ardour also doesn’t yet use VST3’s checkSizeConstraint either.
Anyway, for now I think we should wait for some feedback on the JUCE PR and why JUCE calls peer->updateBounds.
I generally don’t wait to fix things in JUCE, I have my own fork anyway with lots of other changes. So I can apply this PR for now to at least solve it for SonoBus purposes. However, it is a good question why it calls peer->updateBounds() at all… will experiment to see if it breaks things in other hosts and platforms simply not to call it.
Probably a good idea to prevent a recursion in Ardour too by checking if size changed, regardless. Thanks all!
The JUCE team has implemented a fix that appears to resolve the endless resizing issue. Working pretty well for me so I’ve closed my PR regarding the updateBounds call.