(This commit also modifies UI)
Changes groups to their own independent type, "group". This allows them
to be used like other regular types, and allows the ability to reference
groups in multiple scenes. Before, a group would always be linked to
the scene it was in. This made it cumbersome for users to modify groups
if they had a similar group in multiple scenes (they would have to
modify each group in each scene). Making groups like other source types
makes more sense to solve this issue so they can be referenced in
multiple scenes at once. This also removes a significant amount of
group-specific handling code required for implementing groups in the
front-end.
One limitation however: due to the way sub-items of groups are
seamlessly modifiable and sortable as part of the whole scene, the user
cannot have multiple references to the same group within one scene.
(This commit also modifies UI)
Removes obs_scene::group_sceneitem and replaces it with
obs_scene::is_group. Changes a number of other functions related to
groups so that a group is not inherently tied to a specific scene, and
helps allow a single group to be referenced in multiple scenes if
desired.
This function returns a char *, so it should not be const (the value is
set from a function which also returns a char *, so there is no real
reason for this to be const).
When using a macOS running on a case-sensitive filesystem, the project
build fails due to AudioToolBox/AudioQueue.h not being found.
The correct path is AudioToolbox/AudioQueue.h. Since macOS comes with a
case-insensitive filesystem by default, this is a rare ocurrence
among developers who change it to be case-sensitive.
This little change skips returning true immediately when a call to
CoreAudio fails. Instead, it uses similar behavior as further 3 calls
below this change, just checking for unfreed pointers before also
returning true.
Allows the ability to group scene items. Groups internally are
sub-scenes, which allows the ability to add unique filters and
transforms to each group.
Fixes a bug where items that had cropping would recalculate transform
every frame. obs_scene_item::last_width and obs_scene_item::last_height
would be set to the cropped sizes rather than the source's actual size.
Adds a simple signal reference counting function
(signal_handler_connect_ref) that makes it so that signals keep the
handler around until the all the signal itself is disconnected. This
prevents potential crashes where a signal might try to disconnect after
a handler has already been destroyed (typically in C++ with
OBSSignalHandler helper objects, where destruction isn't guaranteed to
be predictable).
This also modifies OBSSignalHandler to use the reference-counting
connections.
Due to the ability to track creation of scenes via the "source_created"
global signal, the callback parameter of obs_load_sources has become
somewhat obsolete. This change allows the ability to pass NULL to the
callback parameter in case the callback is not needed.