Skip to content

Commit

Permalink
libobs: Deprecate obs_get_transition_by_[name|uuid]
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
gxalpha committed Oct 5, 2024
1 parent e6d9f73 commit 61308b4
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
6 changes: 6 additions & 0 deletions docs/sphinx/reference-core.rst
Original file line number Diff line number Diff line change
Expand Up @@ -351,6 +351,9 @@ Libobs Objects
Increments the source reference counter, use
:c:func:`obs_source_release()` to release it when complete.

.. deprecated:: 31.0
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)
Expand All @@ -362,6 +365,9 @@ Libobs Objects

.. versionadded:: 29.1

.. deprecated:: 31.0
Use :c:func:`obs_get_source_by_uuid` instead.

---------------------

.. function:: obs_scene_t *obs_get_scene_by_name(const char *name)
Expand Down
4 changes: 2 additions & 2 deletions libobs/obs.h
Original file line number Diff line number Diff line change
Expand Up @@ -699,10 +699,10 @@ EXPORT obs_source_t *obs_get_source_by_name(const char *name);
EXPORT obs_source_t *obs_get_source_by_uuid(const char *uuid);

/** Get a transition source by its name. */
EXPORT obs_source_t *obs_get_transition_by_name(const char *name);
OBS_DEPRECATED EXPORT obs_source_t *obs_get_transition_by_name(const char *name);

/** Get a transition source by its UUID. */
EXPORT obs_source_t *obs_get_transition_by_uuid(const char *uuid);
OBS_DEPRECATED EXPORT obs_source_t *obs_get_transition_by_uuid(const char *uuid);

/** Gets an output by its name. */
EXPORT obs_output_t *obs_get_output_by_name(const char *name);
Expand Down

0 comments on commit 61308b4

Please sign in to comment.