Selaa lähdekoodia

libobs: Save/Load source UUID in scene item data

derrod 2 vuotta sitten
vanhempi
sitoutus
29db52ad27
1 muutettua tiedostoa jossa 8 lisäystä ja 1 poistoa
  1. 8 1
      libobs/obs-scene.c

+ 8 - 1
libobs/obs-scene.c

@@ -959,6 +959,7 @@ static void scene_load(void *data, obs_data_t *settings);
 static void scene_load_item(struct obs_scene *scene, obs_data_t *item_data)
 {
 	const char *name = obs_data_get_string(item_data, "name");
+	const char *src_uuid = obs_data_get_string(item_data, "source_uuid");
 	obs_source_t *source;
 	const char *scale_filter_str;
 	const char *blend_method_str;
@@ -970,7 +971,11 @@ static void scene_load_item(struct obs_scene *scene, obs_data_t *item_data)
 	if (obs_data_get_bool(item_data, "group_item_backup"))
 		return;
 
-	source = obs_get_source_by_name(name);
+	if (src_uuid && strlen(src_uuid) == UUID_STR_LENGTH)
+		source = obs_get_source_by_uuid(src_uuid);
+	else
+		source = obs_get_source_by_name(name);
+
 	if (!source) {
 		blog(LOG_WARNING,
 		     "[scene_load_item] Source %s not "
@@ -1124,6 +1129,7 @@ static void scene_save_item(obs_data_array_t *array,
 {
 	obs_data_t *item_data = obs_data_create();
 	const char *name = obs_source_get_name(item->source);
+	const char *src_uuid = obs_source_get_uuid(item->source);
 	const char *scale_filter;
 	const char *blend_method;
 	const char *blend_type;
@@ -1136,6 +1142,7 @@ static void scene_save_item(obs_data_array_t *array,
 	}
 
 	obs_data_set_string(item_data, "name", name);
+	obs_data_set_string(item_data, "source_uuid", src_uuid);
 	obs_data_set_bool(item_data, "visible", item->user_visible);
 	obs_data_set_bool(item_data, "locked", item->locked);
 	obs_data_set_double(item_data, "rot", rot);