Kaynağa Gözat

libobs: Always enumerate filter list in reverse

The "last" filter that's rendered is technically at filter index 0, so
enumeration needs to be from the last index in the list to the first
index in the list.
jp9000 10 yıl önce
ebeveyn
işleme
98a6c8f0d0
2 değiştirilmiş dosya ile 4 ekleme ve 4 silme
  1. 2 2
      libobs/obs-source.c
  2. 2 2
      libobs/obs.c

+ 2 - 2
libobs/obs-source.c

@@ -2551,8 +2551,8 @@ void obs_source_enum_filters(obs_source_t *source,
 
 
 	pthread_mutex_lock(&source->filter_mutex);
 	pthread_mutex_lock(&source->filter_mutex);
 
 
-	for (size_t i = 0; i < source->filters.num; i++) {
-		struct obs_source *filter = source->filters.array[i];
+	for (size_t i = source->filters.num; i > 0; i--) {
+		struct obs_source *filter = source->filters.array[i - 1];
 		callback(source, filter, param);
 		callback(source, filter, param);
 	}
 	}
 
 

+ 2 - 2
libobs/obs.c

@@ -1370,8 +1370,8 @@ obs_data_t *obs_save_source(obs_source_t *source)
 	pthread_mutex_lock(&source->filter_mutex);
 	pthread_mutex_lock(&source->filter_mutex);
 
 
 	if (source->filters.num) {
 	if (source->filters.num) {
-		for (size_t i = 0; i < source->filters.num; i++) {
-			obs_source_t *filter = source->filters.array[i];
+		for (size_t i = source->filters.num; i > 0; i--) {
+			obs_source_t *filter = source->filters.array[i - 1];
 			obs_data_t *filter_data = obs_save_source(filter);
 			obs_data_t *filter_data = obs_save_source(filter);
 			obs_data_array_push_back(filters, filter_data);
 			obs_data_array_push_back(filters, filter_data);
 			obs_data_release(filter_data);
 			obs_data_release(filter_data);