I’m developing a JUCE plugin and am constantly iterating on code and rebuilding. I have two questions/feature requests:
Refreshing new versions without restarting the app
One of the tedious development tasks is refreshing the plugin in GP; plugin scanning doesn’t seem to do it, even after deleting the plugin from the list and re-scanning it in. It always loads some cached version. I have to quit the app for the new plugin file to be recognized.
In my case, I’m not updating the version reported to the app. The UI reads the git commit hash and prints it next to the version string. Perhaps GP is not refreshing due to the fact that the version isn’t changing? If I remember correctly, i did try putting the hash in the version string but couldn’t get past/find info on the version syntax requirements.
Is there a way to force a full refresh of the file being used in GP, so we can load new versions without restarting the app?
Every time I refresh the plugin, the panel connections are lost. I have to re-link all the widgets on the panel. This is time-consuming and error-prone. Is there any way to keep the connections and configuration through a plugin refresh? Say, if we could assume that the i/o/midi/etc config would all the be same; a delta would fail to match and just revert to the defaults (extra points for matching what matches and defaulting what doesn’t). Maybe i’m missing a setting? (I spotted Widget Refresh On/Off but it’s not related to this.)
In any event, thank you for the endlessly creative and functional possibilities of this app!
Temporarily remove the plugin from the actual plugin location–then scan plugins in GP—it will be removed–then replace the (updated)plugin to its original location-- scan again in GP–the new version will now be loaded.
Thanks for the suggestion! I just found that when the file is updated after a build, i don’t even need to run the plugin manager: restarting the app shows the new version immediately. This isn’t too bad although it’s still a restart; it’s a lot fewer steps, though.
I think i have to recant both of these requests. After a new build is copied in (automatic part of the build), restarting GP automatically addresses my concerns:
loads the new build without running Plugin Manger
retains the widget assignments
If the roles were reversed, i’d probably say something snarky like, “thanks i could be of so much help!” or simply “thank you drive through”
My only remaining request is to do the reload without having to restart. That would be
I’m not quite sure what this is supposed to mean or why you said this.
The issue you encountered has nothing particularly to do with GP. By default which would happen with any plugin host. If code (an executable or a shared library) is loaded, i.e., already is use, simply replacing the shared library on the hard drive (or SSD) is not going to magically cause that new version to be used. In fact, depending on the OS, you may or may not even be able to replace a file if it’s in use.
That is how the OS works.
For a specific application, say GP, the only way in principle this could be done for plugins would be for GP to explicitly close the shared library, which of course would make the plugin disappear. Then, to avoid mappings from being lost, along the way, GP would have to insert a chameleon plugin as a temporary stand-in every single place the original was being used. Then, you would have to tell GP to reload that plugin, find all the chameleons and replace them.
I cannot see any reason why it would be worthwhile to do this. Simply close GP and reopen it will do the trick.
Absolutely not meant to be a mean comment towards you! I meant it as, "if i got a big thread from a dev with this litany of complaints, highly detailed, with screenshots etc, and shortly after he posted it, he realized the issue was entirely on his side and there is no real issue to complain about and nothing for the product owner to do, I might reply to that dev, “glad i could be of so much help!”, in a hopefully successful attempt to be funny and friendly.
I cannot see any reason why it would be worthwhile to do this. Simply close GP and reopen it will do the trick.
100% agree, it’s working fine for me this way. Thanks again!