Bläddra i källkod

Revert "libobs: Do not release while traversing sources for tick"

This reverts commit 080090c40e81bea82754ffccbda2f625eed64e06.
jp9000 3 år sedan
förälder
incheckning
408ce92146
3 ändrade filer med 5 tillägg och 16 borttagningar
  1. 0 2
      libobs/obs-internal.h
  2. 5 13
      libobs/obs-video.c
  3. 0 1
      libobs/obs.c

+ 0 - 2
libobs/obs-internal.h

@@ -360,8 +360,6 @@ struct obs_core_data {
 	DARRAY(struct draw_callback) draw_callbacks;
 	DARRAY(struct tick_callback) tick_callbacks;
 
-	DARRAY(struct obs_source *) source_iteration_list;
-
 	struct obs_view main_view;
 
 	long long unnamed_index;

+ 5 - 13
libobs/obs-video.c

@@ -59,31 +59,23 @@ static uint64_t tick_sources(uint64_t cur_time, uint64_t last_time)
 	/* ------------------------------------- */
 	/* call the tick function of each source */
 
-	da_resize(data->source_iteration_list, 0);
-
 	pthread_mutex_lock(&data->sources_mutex);
 
 	source = data->first_source;
 	while (source) {
 		struct obs_source *cur_source = obs_source_get_ref(source);
+
 		if (cur_source)
-			da_push_back(data->source_iteration_list, &cur_source);
+			obs_source_video_tick(cur_source, seconds);
 
 		source = (struct obs_source *)source->context.next;
+
+		if (cur_source)
+			obs_source_release(cur_source);
 	}
 
 	pthread_mutex_unlock(&data->sources_mutex);
 
-	/* obs_source_release should not be called while iterating through
-	 * the global sources linked list, otherwise the linked list will
-	 * be compromised */
-	for (size_t i = 0; i < data->source_iteration_list.num; i++) {
-		struct obs_source *source =
-			data->source_iteration_list.array[i];
-		obs_source_video_tick(source, seconds);
-		obs_source_release(source);
-	}
-
 	return cur_time;
 }
 

+ 0 - 1
libobs/obs.c

@@ -696,7 +696,6 @@ static void obs_free_data(void)
 	pthread_mutex_destroy(&data->draw_callbacks_mutex);
 	da_free(data->draw_callbacks);
 	da_free(data->tick_callbacks);
-	da_free(data->source_iteration_list);
 	obs_data_release(data->private_data);
 }