image-source: Add proc handler calls to slideshow

Allows manipulation of the slideshow via procedure handlers.
This commit is contained in:
jp9000 2020-08-08 01:22:05 -07:00
parent 389f7d390f
commit 1475f756f2

View file

@ -527,6 +527,17 @@ static void ss_previous_slide(void *data)
do_transition(ss, false);
}
static void get_state_proc(void *data, calldata_t *cd)
{
struct slideshow *ss = data;
if (ss->stop)
calldata_set_string(cd, "return", "stopped");
else if (ss->paused)
calldata_set_string(cd, "return", "paused");
else
calldata_set_string(cd, "return", "playing");
}
static void play_pause_hotkey(void *data, obs_hotkey_id id,
obs_hotkey_t *hotkey, bool pressed)
{
@ -539,6 +550,12 @@ static void play_pause_hotkey(void *data, obs_hotkey_id id,
ss_play_pause(ss);
}
static void play_pause_proc(void *data, calldata_t *cd)
{
ss_play_pause(data);
UNUSED_PARAMETER(cd);
}
static void restart_hotkey(void *data, obs_hotkey_id id, obs_hotkey_t *hotkey,
bool pressed)
{
@ -551,6 +568,12 @@ static void restart_hotkey(void *data, obs_hotkey_id id, obs_hotkey_t *hotkey,
ss_restart(ss);
}
static void restart_proc(void *data, calldata_t *cd)
{
ss_restart(data);
UNUSED_PARAMETER(cd);
}
static void stop_hotkey(void *data, obs_hotkey_id id, obs_hotkey_t *hotkey,
bool pressed)
{
@ -563,6 +586,12 @@ static void stop_hotkey(void *data, obs_hotkey_id id, obs_hotkey_t *hotkey,
ss_stop(ss);
}
static void stop_proc(void *data, calldata_t *cd)
{
ss_stop(data);
UNUSED_PARAMETER(cd);
}
static void next_slide_hotkey(void *data, obs_hotkey_id id,
obs_hotkey_t *hotkey, bool pressed)
{
@ -578,6 +607,12 @@ static void next_slide_hotkey(void *data, obs_hotkey_id id,
ss_next_slide(ss);
}
static void next_slide_proc(void *data, calldata_t *cd)
{
ss_next_slide(data);
UNUSED_PARAMETER(cd);
}
static void previous_slide_hotkey(void *data, obs_hotkey_id id,
obs_hotkey_t *hotkey, bool pressed)
{
@ -593,6 +628,12 @@ static void previous_slide_hotkey(void *data, obs_hotkey_id id,
ss_previous_slide(ss);
}
static void previous_slide_proc(void *data, calldata_t *cd)
{
ss_previous_slide(data);
UNUSED_PARAMETER(cd);
}
static void ss_destroy(void *data)
{
struct slideshow *ss = data;
@ -605,6 +646,7 @@ static void ss_destroy(void *data)
static void *ss_create(obs_data_t *settings, obs_source_t *source)
{
proc_handler_t *ph = obs_source_get_proc_handler(source);
struct slideshow *ss = bzalloc(sizeof(*ss));
ss->source = source;
@ -634,6 +676,13 @@ static void *ss_create(obs_data_t *settings, obs_source_t *source)
obs_module_text("SlideShow.PreviousSlide"),
previous_slide_hotkey, ss);
proc_handler_add(ph, "string get_state()", get_state_proc, ss);
proc_handler_add(ph, "void playpause()", play_pause_proc, ss);
proc_handler_add(ph, "void restart()", restart_proc, ss);
proc_handler_add(ph, "void stop()", stop_proc, ss);
proc_handler_add(ph, "void next_slide()", next_slide_proc, ss);
proc_handler_add(ph, "void previous_slide()", previous_slide_proc, ss);
pthread_mutex_init_value(&ss->mutex);
if (pthread_mutex_init(&ss->mutex, NULL) != 0)
goto error;