diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index 629506eb5..1382e12d6 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -1770,8 +1770,7 @@ obs_data_array_t *OBSBasic::SaveTransitions() return transitions; } -void OBSBasic::LoadTransitions(obs_data_array_t *transitions, - obs_load_source_cb cb, void *private_data) +void OBSBasic::LoadTransitions(obs_data_array_t *transitions) { size_t count = obs_data_array_count(transitions); diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index e674014fb..712a1432f 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -1035,22 +1035,10 @@ void OBSBasic::LoadData(obs_data_t *data, const char *file) obs_data_array_push_back_array(sources, groups); } - obs_missing_files_t *files = obs_missing_files_create(); - - auto cb = [](void *private_data, obs_source_t *source) { - obs_missing_files_t *f = (obs_missing_files_t *)private_data; - obs_missing_files_t *sf = obs_source_get_missing_files(source); - - obs_missing_files_append(f, sf); - obs_missing_files_destroy(sf); - - UNUSED_PARAMETER(source); - }; - - obs_load_sources(sources, cb, files); + obs_load_sources(sources, nullptr, nullptr); if (transitions) - LoadTransitions(transitions, cb, files); + LoadTransitions(transitions); if (sceneOrder) LoadSceneListOrder(sceneOrder); @@ -1171,20 +1159,8 @@ retryScene: LogScenes(); - if (obs_missing_files_count(files) > 0 && - !App()->IsMissingFilesCheckDisabled()) { - /* the window hasn't fully initialized by this point on macOS, - * so put this at the end of the current task queue. Fixes a - * bug where the window be behind OBS on startup */ - QTimer::singleShot(0, [this, files] { - missDialog = new OBSMissingFiles(files, this); - missDialog->setAttribute(Qt::WA_DeleteOnClose, true); - missDialog->show(); - missDialog->raise(); - }); - } else { - obs_missing_files_destroy(files); - } + if (!App()->IsMissingFilesCheckDisabled()) + on_actionShowMissingFiles_triggered(); disableSaving--; @@ -4895,15 +4871,24 @@ void OBSBasic::on_actionShowMissingFiles_triggered() obs_enum_all_sources(cb_transitions, files); if (obs_missing_files_count(files) > 0) { - missDialog = new OBSMissingFiles(files, this); - missDialog->setAttribute(Qt::WA_DeleteOnClose, true); - missDialog->show(); - missDialog->raise(); + /* When loading the missing files dialog on launch, the + * window hasn't fully initialized by this point on macOS, + * so put this at the end of the current task queue. Fixes + * a bug where the window is behind OBS on startup. */ + QTimer::singleShot(0, [this, files] { + missDialog = new OBSMissingFiles(files, this); + missDialog->setAttribute(Qt::WA_DeleteOnClose, true); + missDialog->show(); + missDialog->raise(); + }); } else { obs_missing_files_destroy(files); - OBSMessageBox::information( - this, QTStr("MissingFiles.NoMissing.Title"), - QTStr("MissingFiles.NoMissing.Text")); + + /* Only raise dialog if triggered manually */ + if (!disableSaving) + OBSMessageBox::information( + this, QTStr("MissingFiles.NoMissing.Title"), + QTStr("MissingFiles.NoMissing.Text")); } } diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 4a91ceb31..48fa65368 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -439,8 +439,7 @@ private: obs_source_t *FindTransition(const char *name); OBSSource GetCurrentTransition(); obs_data_array_t *SaveTransitions(); - void LoadTransitions(obs_data_array_t *transitions, - obs_load_source_cb cb, void *private_data); + void LoadTransitions(obs_data_array_t *transitions); obs_source_t *fadeTransition; obs_source_t *cutTransition;