Harden startup plugin loading and add progress feedback#1297
Harden startup plugin loading and add progress feedback#1297francescofugazzi wants to merge 4 commits into
Conversation
|
Thanks for the PR! Here are some of my comments:
|
|
Hey, I am looking at the pr. Not 100% sure about shifting the work into the main thread. When I added the system I added an explicit warning for the plugin developers so that they don't do heavy initializations on startup. For instance, the densification plugin loading warns explicitly:
I think it MUST be fixed in the plugin @shadygm. Anyway, I think the pr has some nice bits. The startup overlay must be fixed. I also think that the loading bar with the added text surrounding should be represented in a much more compact way. Issues:
|
- Defer startup plugin autoload until after the UI is initialized to prevent heavy plugin imports from freezing the splash screen. - Add a startup plugin loading progress bar so long-running imports remain visible during application startup. - Suspend Python-driven panel updates, signal flushing, and scene sync while startup plugin preload is running to avoid main-thread/GIL stalls. - Keep the splash screen visible until plugin loading completes, and only reveal the click-to-continue prompt at 100%. - Use `densification` as the representative heavy plugin for this startup path, since it can take several seconds to import when loaded at startup.
- Keep the startup plugin loading text aligned with the plugin that is actually being imported, so the splash no longer shows stale counts or the wrong plugin name while the next plugin is loading. - Change the final completion state to a simple Loaded once the last startup plugin finishes. - Hide the plugin progress row entirely when no plugins are configured to load at startup. - Fix the additional startup crash path caused by clicking or resizing the window while plugin autoload is still running. - Preserve the existing startup loading flow and responsiveness work from the previous commit.
- Rework the startup plugin loading row to keep the layout compact and stable during progress updates. - Prevent the late-stage alignment shift when loading transitions to completion. - Keep splash dismissal as a click-anywhere action only after startup loading completes. - Preserve language selection behavior while the splash is visible. - Localize startup plugin loading strings across supported locales. - Refresh the completed loading message when the UI language changes so it stays in sync.
|
Thanks for the feedback. I addressed the earlier startup issues by keeping the splash layout compact and stable, fixing the language selector / locale strings, and making the startup plugin status update correctly during the load sequence. I moved the startup plugin preload onto the main thread so it stays synchronized with the UI and the Python/RML startup state. That avoids the freeze/deadlock behavior we were seeing when a heavy plugin imported during startup, and it lets the splash keep showing live progress instead of stalling. The main tradeoff is that the window remains blocked until startup loading completes. That is still the downside of this approach, but it is the safest way I found to keep startup deterministic and prevent the more severe startup hangs/crashes. |
|
I am afk this week. I will look into it when back. However, the rendering should load directly otherwise it has a big impact on my workflow. |
MrNeRF
left a comment
There was a problem hiding this comment.
Just blocking until I have reviewed it.


This PR makes startup plugin loading more robust and visible, especially for heavy plugins that can otherwise stall the splash screen.
Changes:
Example:
densificationis a representative heavy plugin for this path, since it can take several seconds to import when loaded at startup.Notes: