diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index ce923d5c6..90f6de355 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -113,6 +113,10 @@ MoveSourceDown="Move Source(s) Down" SourceProperties="Open Source Properties" SourceFilters="Open Source Filters" +# warning for plugin load failures +PluginsFailedToLoad.Title="Plugin Load Error" +PluginsFailedToLoad.Text="The following OBS plugins failed to load:\n\n%1\nPlease update or remove these plugins." + # warning if program already open AlreadyRunning.Title="OBS is already running" AlreadyRunning.Text="OBS is already running! Unless you meant to do this, please shut down any existing instances of OBS before trying to run a new instance. If you have OBS set to minimize to the system tray, please check to see if it's still running there." diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index e66ca53e7..fb36a36d2 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -1778,15 +1778,18 @@ void OBSBasic::OBSInit() LoadLibraryW(L"Qt6Network"); #endif #endif + struct obs_module_failure_info mfi; AddExtraModulePaths(); blog(LOG_INFO, "---------------------------------"); - obs_load_all_modules(); + obs_load_all_modules2(&mfi); blog(LOG_INFO, "---------------------------------"); obs_log_loaded_modules(); blog(LOG_INFO, "---------------------------------"); obs_post_load_modules(); + BPtr failed_modules = mfi.failed_modules; + #ifdef BROWSER_AVAILABLE cef = obs_browser_init_panel(); #endif @@ -2071,6 +2074,25 @@ void OBSBasic::OBSInit() OnFirstLoad(); activateWindow(); + + /* ------------------------------------------- */ + /* display warning message for failed modules */ + + if (mfi.count) { + QString failed_plugins; + + char **plugin = mfi.failed_modules; + while (*plugin) { + failed_plugins += *plugin; + failed_plugins += "\n"; + plugin++; + } + + QString failed_msg = + QTStr("PluginsFailedToLoad.Text").arg(failed_plugins); + OBSMessageBox::warning(this, QTStr("PluginsFailedToLoad.Title"), + failed_msg); + } } void OBSBasic::OnFirstLoad()