|
@@ -956,6 +956,15 @@ void OBSBasic::Load(const char *file)
|
|
|
LoadData(data, file);
|
|
|
}
|
|
|
|
|
|
+static inline void AddMissingFiles(void *data, obs_source_t *source)
|
|
|
+{
|
|
|
+ obs_missing_files_t *f = (obs_missing_files_t *)data;
|
|
|
+ obs_missing_files_t *sf = obs_source_get_missing_files(source);
|
|
|
+
|
|
|
+ obs_missing_files_append(f, sf);
|
|
|
+ obs_missing_files_destroy(sf);
|
|
|
+}
|
|
|
+
|
|
|
void OBSBasic::LoadData(obs_data_t *data, const char *file)
|
|
|
{
|
|
|
ClearSceneData();
|
|
@@ -1024,10 +1033,11 @@ void OBSBasic::LoadData(obs_data_t *data, const char *file)
|
|
|
obs_data_array_push_back_array(sources, groups);
|
|
|
}
|
|
|
|
|
|
- obs_load_sources(sources, nullptr, nullptr);
|
|
|
+ obs_missing_files_t *files = obs_missing_files_create();
|
|
|
+ obs_load_sources(sources, AddMissingFiles, files);
|
|
|
|
|
|
if (transitions)
|
|
|
- LoadTransitions(transitions);
|
|
|
+ LoadTransitions(transitions, AddMissingFiles, files);
|
|
|
if (sceneOrder)
|
|
|
LoadSceneListOrder(sceneOrder);
|
|
|
|
|
@@ -1149,7 +1159,7 @@ retryScene:
|
|
|
LogScenes();
|
|
|
|
|
|
if (!App()->IsMissingFilesCheckDisabled())
|
|
|
- on_actionShowMissingFiles_triggered();
|
|
|
+ ShowMissingFilesDialog(files);
|
|
|
|
|
|
disableSaving--;
|
|
|
|
|
@@ -4854,34 +4864,8 @@ void OBSBasic::on_action_Settings_triggered()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static inline void AddMissingFiles(void *data, obs_source_t *source)
|
|
|
-{
|
|
|
- obs_missing_files_t *f = (obs_missing_files_t *)data;
|
|
|
- obs_missing_files_t *sf = obs_source_get_missing_files(source);
|
|
|
-
|
|
|
- obs_missing_files_append(f, sf);
|
|
|
- obs_missing_files_destroy(sf);
|
|
|
-}
|
|
|
-
|
|
|
-void OBSBasic::on_actionShowMissingFiles_triggered()
|
|
|
+void OBSBasic::ShowMissingFilesDialog(obs_missing_files_t *files)
|
|
|
{
|
|
|
- obs_missing_files_t *files = obs_missing_files_create();
|
|
|
-
|
|
|
- auto cb_sources = [](void *data, obs_source_t *source) {
|
|
|
- AddMissingFiles(data, source);
|
|
|
- return true;
|
|
|
- };
|
|
|
- obs_enum_sources(cb_sources, files);
|
|
|
-
|
|
|
- auto cb_transitions = [](void *data, obs_source_t *source) {
|
|
|
- if (obs_source_get_type(source) != OBS_SOURCE_TYPE_TRANSITION)
|
|
|
- return true;
|
|
|
-
|
|
|
- AddMissingFiles(data, source);
|
|
|
- return true;
|
|
|
- };
|
|
|
- obs_enum_all_sources(cb_transitions, files);
|
|
|
-
|
|
|
if (obs_missing_files_count(files) > 0) {
|
|
|
/* When loading the missing files dialog on launch, the
|
|
|
* window hasn't fully initialized by this point on macOS,
|
|
@@ -4904,6 +4888,19 @@ void OBSBasic::on_actionShowMissingFiles_triggered()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void OBSBasic::on_actionShowMissingFiles_triggered()
|
|
|
+{
|
|
|
+ obs_missing_files_t *files = obs_missing_files_create();
|
|
|
+
|
|
|
+ auto cb_sources = [](void *data, obs_source_t *source) {
|
|
|
+ AddMissingFiles(data, source);
|
|
|
+ return true;
|
|
|
+ };
|
|
|
+
|
|
|
+ obs_enum_all_sources(cb_sources, files);
|
|
|
+ ShowMissingFilesDialog(files);
|
|
|
+}
|
|
|
+
|
|
|
void OBSBasic::on_actionAdvAudioProperties_triggered()
|
|
|
{
|
|
|
if (advAudioWindow != nullptr) {
|