sources: fix GetSourceImage method

This commit is contained in:
Stéphane L 2019-04-18 21:45:30 +02:00
parent 79ddb43ac3
commit fe00f31147
2 changed files with 20 additions and 22 deletions

View File

@ -116,7 +116,7 @@ class WSRequestHandler : public QObject {
static HandlerResponse HandleGetSourceTypesList(WSRequestHandler* req); static HandlerResponse HandleGetSourceTypesList(WSRequestHandler* req);
static HandlerResponse HandleGetSourceSettings(WSRequestHandler* req); static HandlerResponse HandleGetSourceSettings(WSRequestHandler* req);
static HandlerResponse HandleSetSourceSettings(WSRequestHandler* req); static HandlerResponse HandleSetSourceSettings(WSRequestHandler* req);
static void HandleGetSourceImage(WSRequestHandler* req); static HandlerResponse HandleGetSourceImage(WSRequestHandler* req);
static HandlerResponse HandleGetSourceFilters(WSRequestHandler* req); static HandlerResponse HandleGetSourceFilters(WSRequestHandler* req);
static HandlerResponse HandleAddFilterToSource(WSRequestHandler* req); static HandlerResponse HandleAddFilterToSource(WSRequestHandler* req);

View File

@ -1336,17 +1336,15 @@ HandlerResponse WSRequestHandler::HandleSetSourceFilterSettings(WSRequestHandler
return req->SendOKResponse(); return req->SendOKResponse();
} }
void WSRequestHandler::HandleGetSourceImage(WSRequestHandler* req) { HandlerResponse WSRequestHandler::HandleGetSourceImage(WSRequestHandler* req) {
if (!req->hasField("sourceName")) { if (!req->hasField("sourceName")) {
req->SendErrorResponse("missing request parameters"); return req->SendErrorResponse("missing request parameters");
return;
} }
const char* sourceName = obs_data_get_string(req->data, "sourceName"); const char* sourceName = obs_data_get_string(req->data, "sourceName");
OBSSourceAutoRelease source = obs_get_source_by_name(sourceName); OBSSourceAutoRelease source = obs_get_source_by_name(sourceName);
if (!source) { if (!source) {
req->SendErrorResponse("specified source doesn't exist"); return req->SendErrorResponse("specified source doesn't exist");;
return;
} }
const uint32_t imgWidth = obs_source_get_base_width(source); const uint32_t imgWidth = obs_source_get_base_width(source);
@ -1392,7 +1390,10 @@ void WSRequestHandler::HandleGetSourceImage(WSRequestHandler* req) {
obs_leave_graphics(); obs_leave_graphics();
if (renderSuccess) { if (!renderSuccess) {
return req->SendErrorResponse("Source render failed.");
}
QByteArray encodedImgBytes; QByteArray encodedImgBytes;
QBuffer buffer(&encodedImgBytes); QBuffer buffer(&encodedImgBytes);
buffer.open(QBuffer::WriteOnly); buffer.open(QBuffer::WriteOnly);
@ -1405,8 +1406,5 @@ void WSRequestHandler::HandleGetSourceImage(WSRequestHandler* req) {
OBSDataAutoRelease response = obs_data_create(); OBSDataAutoRelease response = obs_data_create();
obs_data_set_string(response, "sourceName", obs_source_get_name(source)); obs_data_set_string(response, "sourceName", obs_source_get_name(source));
obs_data_set_string(response, "img", imgBase64.toUtf8().constData()); obs_data_set_string(response, "img", imgBase64.toUtf8().constData());
req->SendOKResponse(response); return req->SendOKResponse(response);
} else {
req->SendErrorResponse("Source render failed.");
}
} }