mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-15 07:44:10 +00:00
Revert "libobs: Do not release while traversing sources for tick"
This reverts commit 080090c40e
.
This commit is contained in:
parent
d07bd7dff2
commit
408ce92146
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue