mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-19 09:39:15 +00:00
image-source: Add slide_changed signal
Allows a plugin or script to know when a slide has changed, and which index/file it's switched to
This commit is contained in:
parent
f96ae65d1b
commit
1ea5917973
|
@ -94,6 +94,7 @@ struct slideshow {
|
|||
uint32_t tr_speed;
|
||||
const char *tr_name;
|
||||
obs_source_t *transition;
|
||||
calldata_t cd;
|
||||
|
||||
float elapsed;
|
||||
size_t cur_item;
|
||||
|
@ -280,6 +281,16 @@ static void do_transition(void *data, bool to_null)
|
|||
set_media_state(ss, OBS_MEDIA_STATE_ENDED);
|
||||
obs_source_media_ended(ss->source);
|
||||
}
|
||||
|
||||
if (valid && !to_null) {
|
||||
calldata_set_int(&ss->cd, "index", ss->cur_item);
|
||||
calldata_set_string(&ss->cd, "path",
|
||||
ss->files.array[ss->cur_item].path);
|
||||
|
||||
signal_handler_t *sh =
|
||||
obs_source_get_signal_handler(ss->source);
|
||||
signal_handler_signal(sh, "slide_changed", &ss->cd);
|
||||
}
|
||||
}
|
||||
|
||||
static void ss_update(void *data, obs_data_t *settings)
|
||||
|
@ -661,6 +672,7 @@ static void ss_destroy(void *data)
|
|||
obs_source_release(ss->transition);
|
||||
free_files(&ss->files.da);
|
||||
pthread_mutex_destroy(&ss->mutex);
|
||||
calldata_free(&ss->cd);
|
||||
bfree(ss);
|
||||
}
|
||||
|
||||
|
@ -699,6 +711,9 @@ static void *ss_create(obs_data_t *settings, obs_source_t *source)
|
|||
proc_handler_add(ph, "int current_index()", current_slide_proc, ss);
|
||||
proc_handler_add(ph, "int total_files()", total_slides_proc, ss);
|
||||
|
||||
signal_handler_t *sh = obs_source_get_signal_handler(ss->source);
|
||||
signal_handler_add(sh, "void slide_changed(int index, string path)");
|
||||
|
||||
pthread_mutex_init_value(&ss->mutex);
|
||||
if (pthread_mutex_init(&ss->mutex, NULL) != 0)
|
||||
goto error;
|
||||
|
|
Loading…
Reference in a new issue