Moved some repeated code to utils, added source_name to other commands

This commit is contained in:
Mikhail Swift 2017-02-26 18:01:09 -05:00
parent f8e1c454d9
commit a527f343cd
3 changed files with 33 additions and 15 deletions

View File

@ -147,6 +147,18 @@ obs_source_t* Utils::GetTransitionFromName(const char *search_name) {
return found_transition;
}
obs_source_t* Utils::GetSceneFromNameOrCurrent(const char *scene_name) {
obs_source_t* scene;
if (!scene_name || !strlen(scene_name)) {
scene = obs_frontend_get_current_scene();
}
else {
scene = obs_get_source_by_name(scene_name);
}
return scene;
}
obs_data_array_t* Utils::GetScenes() {
obs_frontend_source_list sceneList = {};
obs_frontend_get_scenes(&sceneList);

View File

@ -29,6 +29,7 @@ class Utils
static obs_data_t* GetSceneItemData(obs_scene_item *item);
static obs_sceneitem_t* GetSceneItemFromName(obs_source_t *source, const char *name);
static obs_source_t* GetTransitionFromName(const char *search_name);
static obs_source_t* GetSceneFromNameOrCurrent(const char *scene_name);
static obs_data_array_t* GetScenes();
static obs_data_t* GetSceneData(obs_source *source);

View File

@ -262,15 +262,8 @@ void WSRequestHandler::HandleSetSourceRender(WSRequestHandler *owner)
return;
}
obs_source_t* scene;
const char *sceneName = obs_data_get_string(owner->_requestData, "scene-name");
if (!sceneName || !strlen(sceneName)) {
scene = obs_frontend_get_current_scene();
}
else {
scene = obs_get_source_by_name(sceneName);
}
obs_source_t *scene = Utils::GetSceneFromNameOrCurrent(sceneName);
if (scene == NULL) {
owner->SendErrorResponse("requested scene doesn't exist");
return;
@ -492,12 +485,18 @@ void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
return;
}
const char *scene_name = obs_data_get_string(owner->_requestData, "scene-name");
obs_source_t *scene = Utils::GetSceneFromNameOrCurrent(scene_name);
if (scene == NULL) {
owner->SendErrorResponse("requested scene could not be found");
return;
}
vec2 item_position = {0};
item_position.x = obs_data_get_double(owner->_requestData, "x");
item_position.y = obs_data_get_double(owner->_requestData, "y");
obs_source_t* current_scene = obs_frontend_get_current_scene();
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(scene, item_name);
if (scene_item)
{
@ -511,7 +510,7 @@ void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
owner->SendErrorResponse("specified scene item doesn't exist");
}
obs_source_release(current_scene);
obs_source_release(scene);
}
void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
@ -523,14 +522,20 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
return;
}
const char *scene_name = obs_data_get_string(owner->_requestData, "scene-name");
obs_source_t* scene = Utils::GetSceneFromNameOrCurrent(scene_name);
if (scene == NULL) {
owner->SendErrorResponse("requested scene doesn't exist");
return;
}
vec2 scale;
scale.x = obs_data_get_double(owner->_requestData, "x-scale");
scale.y = obs_data_get_double(owner->_requestData, "y-scale");
float rotation = obs_data_get_double(owner->_requestData, "rotation");
obs_source_t* current_scene = obs_frontend_get_current_scene();
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(scene, item_name);
if (scene_item)
{
@ -545,7 +550,7 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
owner->SendErrorResponse("specified scene item doesn't exist");
}
obs_source_release(current_scene);
obs_source_release(scene);
}
void WSRequestHandler::HandleSetCurrentSceneCollection(WSRequestHandler *owner)
@ -629,4 +634,4 @@ void WSRequestHandler::HandleListProfiles(WSRequestHandler *owner)
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner)
{
owner->SendErrorResponse("not implemented");
}
}