libobs: Add video tick callback functions
Allows the ability to have a callback invoked every time video ticks. Particularly useful for scripting.
This commit is contained in:
@@ -38,9 +38,24 @@ static uint64_t tick_sources(uint64_t cur_time, uint64_t last_time)
|
||||
delta_time = cur_time - last_time;
|
||||
seconds = (float)((double)delta_time / 1000000000.0);
|
||||
|
||||
/* ------------------------------------- */
|
||||
/* call tick callbacks */
|
||||
|
||||
pthread_mutex_lock(&obs->data.draw_callbacks_mutex);
|
||||
|
||||
for (size_t i = obs->data.tick_callbacks.num; i > 0; i--) {
|
||||
struct tick_callback *callback;
|
||||
callback = obs->data.tick_callbacks.array + (i - 1);
|
||||
callback->tick(callback->param, seconds);
|
||||
}
|
||||
|
||||
pthread_mutex_unlock(&obs->data.draw_callbacks_mutex);
|
||||
|
||||
/* ------------------------------------- */
|
||||
/* call the tick function of each source */
|
||||
|
||||
pthread_mutex_lock(&data->sources_mutex);
|
||||
|
||||
/* call the tick function of each source */
|
||||
source = data->first_source;
|
||||
while (source) {
|
||||
obs_source_video_tick(source, seconds);
|
||||
@@ -111,9 +126,9 @@ static inline void render_main_texture(struct obs_core_video *video,
|
||||
|
||||
pthread_mutex_lock(&obs->data.draw_callbacks_mutex);
|
||||
|
||||
for (size_t i = 0; i < obs->data.draw_callbacks.num; i++) {
|
||||
for (size_t i = obs->data.draw_callbacks.num; i > 0; i--) {
|
||||
struct draw_callback *callback;
|
||||
callback = obs->data.draw_callbacks.array+i;
|
||||
callback = obs->data.draw_callbacks.array + (i - 1);
|
||||
|
||||
callback->draw(callback->param,
|
||||
video->base_width, video->base_height);
|
||||
|
Reference in New Issue
Block a user