diff --git a/UI/api-interface.cpp b/UI/api-interface.cpp index a933a945d..a29d66b26 100644 --- a/UI/api-interface.cpp +++ b/UI/api-interface.cpp @@ -139,6 +139,17 @@ struct OBSStudioAPI : obs_frontend_callbacks { Q_ARG(OBSSource, OBSSource(transition))); } + int obs_frontend_get_transition_duration(void) override + { + return main->ui->transitionDuration->value(); + } + + void obs_frontend_set_transition_duration(int duration) override + { + QMetaObject::invokeMethod(main->ui->transitionDuration, "setValue", + Q_ARG(int, duration)); + } + void obs_frontend_get_scene_collections( std::vector &strings) override { diff --git a/UI/obs-frontend-api/obs-frontend-api.cpp b/UI/obs-frontend-api/obs-frontend-api.cpp index f0b9022cf..0539a3e10 100644 --- a/UI/obs-frontend-api/obs-frontend-api.cpp +++ b/UI/obs-frontend-api/obs-frontend-api.cpp @@ -132,6 +132,19 @@ void obs_frontend_set_current_transition(obs_source_t *transition) c->obs_frontend_set_current_transition(transition); } +int obs_frontend_get_transition_duration(void) +{ + return !!callbacks_valid() + ? c->obs_frontend_get_transition_duration() + : 0; +} + +void obs_frontend_set_transition_duration(int duration) +{ + if (callbacks_valid()) + c->obs_frontend_set_transition_duration(duration); +} + char **obs_frontend_get_scene_collections(void) { if (!callbacks_valid()) diff --git a/UI/obs-frontend-api/obs-frontend-api.h b/UI/obs-frontend-api/obs-frontend-api.h index 86d53abdc..b2d28cb12 100644 --- a/UI/obs-frontend-api/obs-frontend-api.h +++ b/UI/obs-frontend-api/obs-frontend-api.h @@ -93,6 +93,8 @@ EXPORT void obs_frontend_get_transitions( struct obs_frontend_source_list *sources); EXPORT obs_source_t *obs_frontend_get_current_transition(void); EXPORT void obs_frontend_set_current_transition(obs_source_t *transition); +EXPORT int obs_frontend_get_transition_duration(void); +EXPORT void obs_frontend_set_transition_duration(int duration); EXPORT char **obs_frontend_get_scene_collections(void); EXPORT char *obs_frontend_get_current_scene_collection(void); diff --git a/UI/obs-frontend-api/obs-frontend-internal.hpp b/UI/obs-frontend-api/obs-frontend-internal.hpp index 331f509ab..05dcd135e 100644 --- a/UI/obs-frontend-api/obs-frontend-internal.hpp +++ b/UI/obs-frontend-api/obs-frontend-internal.hpp @@ -21,6 +21,8 @@ struct obs_frontend_callbacks { virtual obs_source_t *obs_frontend_get_current_transition(void)=0; virtual void obs_frontend_set_current_transition( obs_source_t *transition)=0; + virtual int obs_frontend_get_transition_duration(void)=0; + virtual void obs_frontend_set_transition_duration(int duration)=0; virtual void obs_frontend_get_scene_collections( std::vector &strings)=0; diff --git a/docs/sphinx/reference-frontend-api.rst b/docs/sphinx/reference-frontend-api.rst index 3746135ca..e9d08422f 100644 --- a/docs/sphinx/reference-frontend-api.rst +++ b/docs/sphinx/reference-frontend-api.rst @@ -235,6 +235,18 @@ Functions --------------------------------------- +.. function:: int obs_frontend_get_transition_duration(void) + + :return: The transition duration (in milliseconds) currently set in the UI. + +--------------------------------------- + +.. function:: void obs_frontend_set_transition_duration(int duration) + + :param duration: Desired transition duration (in milliseconds) + +--------------------------------------- + .. function:: char **obs_frontend_get_scene_collections(void) :return: The list of profile names, ending with NULL. The list is