Преглед на файлове

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 години
родител
ревизия
98a6c8f0d0
променени са 2 файла, в които са добавени 4 реда и са изтрити 4 реда
  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);