Răsfoiți Sursa

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 ani în urmă
părinte
comite
98a6c8f0d0
2 a modificat fișierele cu 4 adăugiri și 4 ștergeri
  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);
 
-	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);
 	}
 

+ 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);
 
 	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_array_push_back(filters, filter_data);
 			obs_data_release(filter_data);