Added new request types: SetSyncOffset and GetSyncOffset

This commit is contained in:
dragonbane 2017-08-07 02:19:09 +02:00
parent 819621e307
commit 2562272775
2 changed files with 56 additions and 0 deletions

View File

@ -77,6 +77,8 @@ WSRequestHandler::WSRequestHandler(QWebSocket* client) :
messageMap["ToggleMute"] = WSRequestHandler::HandleToggleMute; messageMap["ToggleMute"] = WSRequestHandler::HandleToggleMute;
messageMap["SetMute"] = WSRequestHandler::HandleSetMute; messageMap["SetMute"] = WSRequestHandler::HandleSetMute;
messageMap["GetMute"] = WSRequestHandler::HandleGetMute; messageMap["GetMute"] = WSRequestHandler::HandleGetMute;
messageMap["SetSyncOffset"] = WSRequestHandler::HandleSetSyncOffset;
messageMap["GetSyncOffset"] = WSRequestHandler::HandleGetSyncOffset;
messageMap["GetSpecialSources"] = WSRequestHandler::HandleGetSpecialSources; messageMap["GetSpecialSources"] = WSRequestHandler::HandleGetSpecialSources;
messageMap["SetCurrentSceneCollection"] = WSRequestHandler::HandleSetCurrentSceneCollection; messageMap["SetCurrentSceneCollection"] = WSRequestHandler::HandleSetCurrentSceneCollection;
@ -710,6 +712,58 @@ void WSRequestHandler::HandleGetMute(WSRequestHandler* req) {
obs_data_release(response); obs_data_release(response);
} }
void WSRequestHandler::HandleSetSyncOffset(WSRequestHandler* req) {
if (!req->hasField("source") ||
!req->hasField("offset")) {
req->SendErrorResponse("missing request parameters");
return;
}
const char* source_name = obs_data_get_string(req->data, "source");
int64_t source_sync_offset = (int64_t)obs_data_get_int(req->data, "offset");
if (source_name == NULL || strlen(source_name) < 1 ||
source_sync_offset < 0 {
req->SendErrorResponse("invalid request parameters");
return;
}
obs_source_t* source = obs_get_source_by_name(source_name);
if (!source) {
req->SendErrorResponse("specified source doesn't exist");
return;
}
obs_source_set_sync_offset(source, source_sync_offset);
req->SendOKResponse();
obs_source_release(source);
}
void WSRequestHandler::HandleGetSyncOffset(WSRequestHandler* req) {
if (!req->hasField("source")) {
req->SendErrorResponse("missing request parameters");
return;
}
const char* source_name = obs_data_get_string(req->data, "source");
if (str_valid(source_name)) {
obs_source_t* source = obs_get_source_by_name(source_name);
obs_data_t* response = obs_data_create();
obs_data_set_string(response, "name", source_name);
obs_data_set_int(response, "offset", obs_source_get_sync_offset(source));
req->SendOKResponse(response);
obs_data_release(response);
obs_source_release(source);
}
else {
req->SendErrorResponse("invalid request parameters");
}
}
void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler* req) { void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler* req) {
if (!req->hasField("item") || if (!req->hasField("item") ||
!req->hasField("x") || !req->hasField("y")) { !req->hasField("x") || !req->hasField("y")) {

View File

@ -83,6 +83,8 @@ class WSRequestHandler : public QObject {
static void HandleToggleMute(WSRequestHandler* req); static void HandleToggleMute(WSRequestHandler* req);
static void HandleSetMute(WSRequestHandler* req); static void HandleSetMute(WSRequestHandler* req);
static void HandleGetMute(WSRequestHandler* req); static void HandleGetMute(WSRequestHandler* req);
static void HandleSetSyncOffset(WSRequestHandler* req);
static void HandleGetSyncOffset(WSRequestHandler* req);
static void HandleGetSpecialSources(WSRequestHandler* req); static void HandleGetSpecialSources(WSRequestHandler* req);
static void HandleSetCurrentSceneCollection(WSRequestHandler* req); static void HandleSetCurrentSceneCollection(WSRequestHandler* req);