requests(outputs): fix corrupted parameters object on MSVC when using findOutputOrFail

This commit is contained in:
Stéphane Lepin 2020-11-27 15:33:32 +01:00
parent b9cbd0ecd1
commit 6b03efed42

View File

@ -59,7 +59,7 @@ obs_data_t* getOutputInfo(obs_output_t* output)
return data; return data;
} }
RpcResponse findOutputOrFail(const RpcRequest& request, std::function<RpcResponse (obs_output_t*)> callback) RpcResponse findOutputOrFail(const RpcRequest& request, std::function<RpcResponse (obs_output_t*, const RpcRequest&)> callback)
{ {
if (!request.hasField("outputName")) { if (!request.hasField("outputName")) {
return request.failed("missing request parameters"); return request.failed("missing request parameters");
@ -71,7 +71,7 @@ RpcResponse findOutputOrFail(const RpcRequest& request, std::function<RpcRespons
return request.failed("specified output doesn't exist"); return request.failed("specified output doesn't exist");
} }
return callback(output); return callback(output, request);
} }
/** /**
@ -117,7 +117,7 @@ RpcResponse WSRequestHandler::ListOutputs(const RpcRequest& request)
*/ */
RpcResponse WSRequestHandler::GetOutputInfo(const RpcRequest& request) RpcResponse WSRequestHandler::GetOutputInfo(const RpcRequest& request)
{ {
return findOutputOrFail(request, [request](obs_output_t* output) { return findOutputOrFail(request, [](obs_output_t* output, const RpcRequest& request) {
OBSDataAutoRelease outputInfo = getOutputInfo(output); OBSDataAutoRelease outputInfo = getOutputInfo(output);
OBSDataAutoRelease fields = obs_data_create(); OBSDataAutoRelease fields = obs_data_create();
@ -140,7 +140,7 @@ RpcResponse WSRequestHandler::GetOutputInfo(const RpcRequest& request)
*/ */
RpcResponse WSRequestHandler::StartOutput(const RpcRequest& request) RpcResponse WSRequestHandler::StartOutput(const RpcRequest& request)
{ {
return findOutputOrFail(request, [request](obs_output_t* output) { return findOutputOrFail(request, [](obs_output_t* output, const RpcRequest& request) {
if (obs_output_active(output)) { if (obs_output_active(output)) {
return request.failed("output already active"); return request.failed("output already active");
} }
@ -171,7 +171,7 @@ RpcResponse WSRequestHandler::StartOutput(const RpcRequest& request)
*/ */
RpcResponse WSRequestHandler::StopOutput(const RpcRequest& request) RpcResponse WSRequestHandler::StopOutput(const RpcRequest& request)
{ {
return findOutputOrFail(request, [request](obs_output_t* output) { return findOutputOrFail(request, [](obs_output_t* output, const RpcRequest& request) {
if (!obs_output_active(output)) { if (!obs_output_active(output)) {
return request.failed("output not active"); return request.failed("output not active");
} }