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.
|
* 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 {Array<Object>} `sceneItems` Array of scene items
|
||||||
* @return {int} `sceneItems.*.itemId` Unique item id of the source item
|
* @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`
|
* @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
|
* @since unreleased
|
||||||
*/
|
*/
|
||||||
RpcResponse WSRequestHandler::GetSceneItemList(const RpcRequest& request) {
|
RpcResponse WSRequestHandler::GetSceneItemList(const RpcRequest& request) {
|
||||||
if (!request.hasField("sceneName")) {
|
const char* sceneName = obs_data_get_string(request.parameters(), "sceneName");
|
||||||
return request.failed("missing request parameters");
|
|
||||||
|
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);
|
OBSScene scene = obs_scene_from_source(sceneSource);
|
||||||
if (!scene) {
|
if (!scene) {
|
||||||
return request.failed("requested scene is invalid or doesnt exist");
|
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);
|
obs_scene_enum_items(scene, sceneItemEnumProc, sceneItemArray);
|
||||||
|
|
||||||
OBSDataAutoRelease response = obs_data_create();
|
OBSDataAutoRelease response = obs_data_create();
|
||||||
|
obs_data_set_string(response, "sceneName", obs_source_get_name(sceneSource));
|
||||||
obs_data_set_array(response, "sceneItems", sceneItemArray);
|
obs_data_set_array(response, "sceneItems", sceneItemArray);
|
||||||
|
|
||||||
return request.success(response);
|
return request.success(response);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user