Browse Source

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 years ago
parent
commit
98a6c8f0d0
2 changed files with 4 additions and 4 deletions
  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);