diff --git a/libobs/obs-source.c b/libobs/obs-source.c index 415478269..6eda6d875 100644 --- a/libobs/obs-source.c +++ b/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); } diff --git a/libobs/obs.c b/libobs/obs.c index 00a60e4de..12e56fbc4 100644 --- a/libobs/obs.c +++ b/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);