Trouble Opening plugView from editorhost, Mac M1

Long time vst hobbyist. First time vst3 developer.

TL;DR: unable to open plugin gui/ plugview from editorhost on M1 Macbook Pro. Neither window.mm nor platform.mm are throwing any errors. Example vst3 plugin opens fine in stand-alone and within Reaper. Code at: github /nathanielBellamy/GrooveSprings/blob/feat/25-effects-v3/gs_desktop_application/src/main/cpp/main.cpp.

the TL: I’m excited to be at the point of adding vst3 to a simple music player that I’ve been developing the past 6 months. I was able to do a proof-of-concept with audiohost processing the audio. However, my project is (soon to be was) built around the JVM and when I tried to open an editorhost window, my M1 Mac would throw an NSWindowError, saying NSWindows need to be instantiated on the main thread.

This caused enough of a headache that it has prompted an earlier-than-expected departure from the JVM, which was helpful en enjoyable to build around, though.

As a first step, I wanted to do a proof-of-concept for opening the plugin gui from editorhost. I’m calling Steinberg::Vst::EditorHost::App::init and everything seems to be working great. I’m not hitting any errors and all thus-far attempted debug logs appear as expected. The only trouble is, the window never opens or appears at all.

Example debug output:

IPlatform::instance()
IPlatform::instance()
Created WindowController
IPlatform::instance()
Platform::createWindow
Window::init success
Window::make
Created Window
ok actually Created Window
onShow called
set frame called
createViewAndShowed

As a first-timer, my assumption is that I am missing something basic and/or fundamental. Unfortunately, I have not been able to figure out what.

Any and all thoughts and advice are appreciated! Thank you, vst3 community!

Good news!

It was something basic and/or fundamental.

I was not providing an appropriate main loop in an appropriate manner. I have since included Qt into the project and calling QApllication#exec() from my main after vst3editorhost is instantiated provides the main loop I was missing beforehand. The Vst3Gui opens up perfectly fine, persists, and is fully interactive.

Still tons to figure out (:raised_hands:) but proof of concept :white_check_mark: !

Happy coding, y’all! :rocket:
Nate Schieber