|
@@ -1076,6 +1076,7 @@ static void obs_free_data(void)
|
|
|
pthread_mutex_destroy(&data->services_mutex);
|
|
|
pthread_mutex_destroy(&data->draw_callbacks_mutex);
|
|
|
da_free(data->draw_callbacks);
|
|
|
+ da_free(data->rendered_callbacks);
|
|
|
da_free(data->tick_callbacks);
|
|
|
obs_data_release(data->private_data);
|
|
|
|
|
@@ -3069,6 +3070,25 @@ void obs_remove_main_render_callback(void (*draw)(void *param, uint32_t cx,
|
|
|
pthread_mutex_unlock(&obs->data.draw_callbacks_mutex);
|
|
|
}
|
|
|
|
|
|
+void obs_add_main_rendered_callback(void (*rendered)(void *param), void *param)
|
|
|
+{
|
|
|
+ struct rendered_callback data = {rendered, param};
|
|
|
+
|
|
|
+ pthread_mutex_lock(&obs->data.draw_callbacks_mutex);
|
|
|
+ da_insert(obs->data.rendered_callbacks, 0, &data);
|
|
|
+ pthread_mutex_unlock(&obs->data.draw_callbacks_mutex);
|
|
|
+}
|
|
|
+
|
|
|
+void obs_remove_main_rendered_callback(void (*rendered)(void *param),
|
|
|
+ void *param)
|
|
|
+{
|
|
|
+ struct rendered_callback data = {rendered, param};
|
|
|
+
|
|
|
+ pthread_mutex_lock(&obs->data.draw_callbacks_mutex);
|
|
|
+ da_erase_item(obs->data.rendered_callbacks, &data);
|
|
|
+ pthread_mutex_unlock(&obs->data.draw_callbacks_mutex);
|
|
|
+}
|
|
|
+
|
|
|
uint32_t obs_get_total_frames(void)
|
|
|
{
|
|
|
return obs->video.total_frames;
|