diff --git a/src/Config.cpp b/src/Config.cpp index b02aebd3..6efaf3e3 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -51,7 +51,7 @@ void Config::Load() // future loads use the override flag. if (FirstLoad) { FirstLoad = false; - if (!ServerPassword.empty()) { + if (!ServerPassword.isEmpty()) { blog(LOG_INFO, "[Config::Load] (FirstLoad) Generating new server password."); ServerPassword = QString::fromStdString(Utils::Crypto::GeneratePassword()); } else { diff --git a/src/requesthandler/RequestHandler.cpp b/src/requesthandler/RequestHandler.cpp index b1046ef0..1a4f04dc 100644 --- a/src/requesthandler/RequestHandler.cpp +++ b/src/requesthandler/RequestHandler.cpp @@ -49,6 +49,7 @@ const std::map RequestHandler::_handlerMap {"GetInputList", &RequestHandler::GetInputList}, {"GetInputKindList", &RequestHandler::GetInputKindList}, {"CreateInput", &RequestHandler::CreateInput}, + //{"RemoveInput", &RequestHandler::RemoveInput}, // Disabled for now. Pending obs-studio#5276 {"SetInputName", &RequestHandler::SetInputName}, {"GetInputDefaultSettings", &RequestHandler::GetInputDefaultSettings}, {"GetInputSettings", &RequestHandler::GetInputSettings}, diff --git a/src/requesthandler/RequestHandler.h b/src/requesthandler/RequestHandler.h index aeab5621..e6ba55c9 100644 --- a/src/requesthandler/RequestHandler.h +++ b/src/requesthandler/RequestHandler.h @@ -70,6 +70,7 @@ class RequestHandler { RequestResult GetInputList(const Request&); RequestResult GetInputKindList(const Request&); RequestResult CreateInput(const Request&); + RequestResult RemoveInput(const Request&); RequestResult SetInputName(const Request&); RequestResult GetInputDefaultSettings(const Request&); RequestResult GetInputSettings(const Request&); diff --git a/src/requesthandler/RequestHandler_Inputs.cpp b/src/requesthandler/RequestHandler_Inputs.cpp index bc139c5d..d4dd0627 100644 --- a/src/requesthandler/RequestHandler_Inputs.cpp +++ b/src/requesthandler/RequestHandler_Inputs.cpp @@ -83,6 +83,22 @@ RequestResult RequestHandler::CreateInput(const Request& request) return RequestResult::Success(responseData); } +RequestResult RequestHandler::RemoveInput(const Request& request) +{ + RequestStatus::RequestStatus statusCode; + std::string comment; + OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment); + if (!input) + return RequestResult::Error(statusCode, comment); + + // Some implementations of removing sources release before remove, and some release after. + // Releasing afterwards guarantees that we don't accidentally destroy the source before + // remove if we happen to hold the last ref (very, very rare) + obs_source_remove(input); + + return RequestResult::Success(); +} + RequestResult RequestHandler::SetInputName(const Request& request) { RequestStatus::RequestStatus statusCode;