MCPcopy Create free account
hub / github.com/WarmUpTill/SceneSwitcher / SetSourceSetting

Function SetSourceSetting

plugins/base/utils/source-setting.cpp:283–373  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

281}
282
283void SetSourceSetting(obs_source_t *source, const SourceSetting &setting,
284 const std::string &value)
285{
286 auto id = setting.GetID();
287 OBSDataAutoRelease data = obs_source_get_settings(source);
288 OBSDataAutoRelease dataWithDefaults = obs_data_get_defaults(data);
289 obs_data_apply(dataWithDefaults, data);
290 auto item = obs_data_item_byname(dataWithDefaults, id.c_str());
291 auto type = obs_data_item_gettype(item);
292 switch (type) {
293 case OBS_DATA_NULL:
294 vblog(LOG_WARNING,
295 "could not set settings value, as the value does not (yet) exist!");
296 break;
297 case OBS_DATA_STRING:
298 obs_data_set_string(data, id.c_str(), value.c_str());
299 break;
300 case OBS_DATA_NUMBER: {
301 auto type = obs_data_item_numtype(item);
302 switch (type) {
303 case OBS_DATA_NUM_INVALID:
304 break;
305 case OBS_DATA_NUM_INT: {
306 auto intValue = GetInt(value);
307 if (intValue.has_value()) {
308 obs_data_set_int(data, id.c_str(), *intValue);
309 break;
310 }
311
312 auto doubleValue = GetDouble(value);
313 if (doubleValue.has_value()) {
314 obs_data_set_int(data, id.c_str(),
315 *doubleValue);
316 }
317
318 break;
319 }
320 case OBS_DATA_NUM_DOUBLE: {
321 auto numValue = GetDouble(value);
322 if (!numValue.has_value()) {
323 break;
324 }
325
326 obs_data_set_double(data, id.c_str(), *numValue);
327 break;
328 }
329 }
330 break;
331 }
332 case OBS_DATA_BOOLEAN:
333 obs_data_set_bool(data, id.c_str(), value == "true");
334 break;
335 case OBS_DATA_OBJECT: {
336 OBSDataAutoRelease json =
337 obs_data_create_from_json(value.c_str());
338 if (!json) {
339 blog(LOG_WARNING,
340 "not setting invalid data object settings value! (%s)",

Callers 3

PerformActionMethod · 0.85
performActionHelperFunction · 0.85

Calls 4

GetIntFunction · 0.85
GetDoubleFunction · 0.85
GetIDMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected