mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Merge pull request #593 from Palakis/feature/getsceneitemlist-default-scene
requests(GetSceneItemList): fallback to current scene if sceneName is not specified
This commit is contained in:
commit
acd3940a7b
@ -17,8 +17,9 @@ void AddSourceHelper(void *_data, obs_scene_t *scene) {
|
||||
/**
|
||||
* Get a list of all scene items in a scene.
|
||||
*
|
||||
* @param {String} `sceneName` Name of the scene to get the list of scene items from.
|
||||
* @param {String (optional)} `sceneName` Name of the scene to get the list of scene items from. Defaults to the current scene if not specified.
|
||||
*
|
||||
* @return {String} `sceneName` Name of the requested (or current) scene
|
||||
* @return {Array<Object>} `sceneItems` Array of scene items
|
||||
* @return {int} `sceneItems.*.itemId` Unique item id of the source item
|
||||
* @return {String} `sceneItems.*.sourceKind` ID if the scene item's source. For example `vlc_source` or `image_source`
|
||||
@ -31,12 +32,15 @@ void AddSourceHelper(void *_data, obs_scene_t *scene) {
|
||||
* @since unreleased
|
||||
*/
|
||||
RpcResponse WSRequestHandler::GetSceneItemList(const RpcRequest& request) {
|
||||
if (!request.hasField("sceneName")) {
|
||||
return request.failed("missing request parameters");
|
||||
const char* sceneName = obs_data_get_string(request.parameters(), "sceneName");
|
||||
|
||||
OBSSourceAutoRelease sceneSource;
|
||||
if (sceneName && strcmp(sceneName, "") != 0) {
|
||||
sceneSource = obs_get_source_by_name(sceneName);
|
||||
} else {
|
||||
sceneSource = obs_frontend_get_current_scene();
|
||||
}
|
||||
|
||||
const char* sceneName = obs_data_get_string(request.parameters(), "sceneName");
|
||||
OBSSourceAutoRelease sceneSource = obs_get_source_by_name(sceneName);
|
||||
OBSScene scene = obs_scene_from_source(sceneSource);
|
||||
if (!scene) {
|
||||
return request.failed("requested scene is invalid or doesnt exist");
|
||||
@ -76,6 +80,7 @@ RpcResponse WSRequestHandler::GetSceneItemList(const RpcRequest& request) {
|
||||
obs_scene_enum_items(scene, sceneItemEnumProc, sceneItemArray);
|
||||
|
||||
OBSDataAutoRelease response = obs_data_create();
|
||||
obs_data_set_string(response, "sceneName", obs_source_get_name(sceneSource));
|
||||
obs_data_set_array(response, "sceneItems", sceneItemArray);
|
||||
|
||||
return request.success(response);
|
||||
|
Loading…
x
Reference in New Issue
Block a user