mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Requests: Add SetSourceName (renaming sources)
Adds the `SetSourceName` request which can be used to rename sources. Also works on scenes since scenes in OBS are also sources.
This commit is contained in:
parent
590943ed95
commit
631ed022ed
@ -91,6 +91,7 @@ const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap {
|
|||||||
{ "ToggleMute", &WSRequestHandler::ToggleMute },
|
{ "ToggleMute", &WSRequestHandler::ToggleMute },
|
||||||
{ "SetMute", &WSRequestHandler::SetMute },
|
{ "SetMute", &WSRequestHandler::SetMute },
|
||||||
{ "GetMute", &WSRequestHandler::GetMute },
|
{ "GetMute", &WSRequestHandler::GetMute },
|
||||||
|
{ "SetSourceName", &WSRequestHandler::SetSourceName },
|
||||||
{ "SetSyncOffset", &WSRequestHandler::SetSyncOffset },
|
{ "SetSyncOffset", &WSRequestHandler::SetSyncOffset },
|
||||||
{ "GetSyncOffset", &WSRequestHandler::GetSyncOffset },
|
{ "GetSyncOffset", &WSRequestHandler::GetSyncOffset },
|
||||||
{ "GetSpecialSources", &WSRequestHandler::GetSpecialSources },
|
{ "GetSpecialSources", &WSRequestHandler::GetSpecialSources },
|
||||||
|
@ -108,6 +108,7 @@ class WSRequestHandler {
|
|||||||
RpcResponse ToggleMute(const RpcRequest&);
|
RpcResponse ToggleMute(const RpcRequest&);
|
||||||
RpcResponse SetMute(const RpcRequest&);
|
RpcResponse SetMute(const RpcRequest&);
|
||||||
RpcResponse GetMute(const RpcRequest&);
|
RpcResponse GetMute(const RpcRequest&);
|
||||||
|
RpcResponse SetSourceName(const RpcRequest&);
|
||||||
RpcResponse SetSyncOffset(const RpcRequest&);
|
RpcResponse SetSyncOffset(const RpcRequest&);
|
||||||
RpcResponse GetSyncOffset(const RpcRequest&);
|
RpcResponse GetSyncOffset(const RpcRequest&);
|
||||||
RpcResponse GetSpecialSources(const RpcRequest&);
|
RpcResponse GetSpecialSources(const RpcRequest&);
|
||||||
|
@ -341,6 +341,46 @@ RpcResponse WSRequestHandler::ToggleMute(const RpcRequest& request)
|
|||||||
return request.success();
|
return request.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets (aka rename) the name of a source. Also works with scenes since scenes are technically sources in OBS.
|
||||||
|
*
|
||||||
|
* Note: If the new name already exists as a source, OBS will automatically modify the name to not interfere.
|
||||||
|
*
|
||||||
|
* @param {String} `sourceName` Source name.
|
||||||
|
* @param {String} `newName` New source name.
|
||||||
|
*
|
||||||
|
* @api requests
|
||||||
|
* @name SetSourceName
|
||||||
|
* @category sources
|
||||||
|
* @since 4.8.0
|
||||||
|
*/
|
||||||
|
RpcResponse WSRequestHandler::SetSourceName(const RpcRequest& request)
|
||||||
|
{
|
||||||
|
if (!request.hasField("sourceName") || !request.hasField("newName")) {
|
||||||
|
return request.failed("missing request parameters");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString sourceName = obs_data_get_string(request.parameters(), "sourceName");
|
||||||
|
QString newName = obs_data_get_string(request.parameters(), "newName");
|
||||||
|
if (sourceName.isEmpty() || newName.isEmpty()) {
|
||||||
|
return request.failed("invalid request parameters");
|
||||||
|
}
|
||||||
|
|
||||||
|
OBSSourceAutoRelease source = obs_get_source_by_name(sourceName.toUtf8());
|
||||||
|
if (!source) {
|
||||||
|
return request.failed("specified source doesn't exist");
|
||||||
|
}
|
||||||
|
|
||||||
|
OBSSourceAutoRelease existingSource = obs_get_source_by_name(newName.toUtf8());
|
||||||
|
if (!existingSource) { // OBS is supposed to automatically rename colliding source names, but it doesn't. So this gets to be the solution for now.
|
||||||
|
obs_source_set_name(source, newName.toUtf8());
|
||||||
|
|
||||||
|
return request.success();
|
||||||
|
} else {
|
||||||
|
return request.failed("a source with that newSourceName already exists");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the audio sync offset of a specified source.
|
* Set the audio sync offset of a specified source.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user