libobs: Deprecate obs_get_transition_by_[name|uuid]

obs_get_transition_by_name is very problematic because transitions are
always private and their names aren't unique. This means that the method
iterates over all private sources and then takes the first that both is
a transition and matches the name we're looking for. However, this could
be from anywhere - it could be a frontend transition, but also a source
transition, quick transition, or even one from third-party plugins. This
is always never what is intended.

As such, this method (which should never have been added in the first
place) needs to go. In its place, obs_frontend_get_transitions returns a
list of all frontend transitions (which is usually what people are
looking for), and alternatively obs_get_source_by_uuid also provides
access to private sources.

While we're at it, obs_get_transition_by_uuid is basically a wrapper for
obs_get_source_by_uuid and not really necessary. UUID's are unique and
a source doesn't suddenly change its type, so if you have a transition's
UUID you can be pretty sure that when you do obs_get_source_by_uuid, it
will still be a transition.
This commit is contained in:
gxalpha
2025-04-01 17:07:24 -04:00
committed by Ryan Foster
parent 5fa4ea44d0
commit 62ef7e0fee
2 changed files with 8 additions and 2 deletions
+6
View File
@@ -351,6 +351,9 @@ Libobs Objects
Increments the source reference counter, use
:c:func:`obs_source_release()` to release it when complete.
.. deprecated:: 31.1
Use :c:func:`obs_frontend_get_transitions` from the Frontend API or :c:func:`obs_get_source_by_uuid` instead.
---------------------
.. function:: obs_source_t *obs_get_transition_by_uuid(const char *uuid)
@@ -362,6 +365,9 @@ Libobs Objects
.. versionadded:: 29.1
.. deprecated:: 31.1
Use :c:func:`obs_get_source_by_uuid` instead.
---------------------
.. function:: obs_scene_t *obs_get_scene_by_name(const char *name)