コード例 #1
0
ファイル: obs-hotkey.c プロジェクト: Bl00drav3n/obs-studio
static inline obs_data_array_t *save_hotkey(obs_hotkey_t *hotkey)
{
	obs_data_array_t *data = obs_data_array_create();

	struct save_bindings_helper_t arg = {data, hotkey};
	enum_bindings(save_bindings_helper, &arg);

	return data;
}
コード例 #2
0
obs_data_array_t *BiLiOBSMainWid::mSaveSceneListOrder() {

	obs_data_array_t *sceneOrder = obs_data_array_create();

#if 1
	obs_source_t* currentScene = obs_get_output_source(0);
	std::list<std::string> tmpSceneOrder;

	//获取所有场景
	for (OBSSource& src : OBSEnumSources())
	{
		if (strcmp(obs_source_get_id(src), "scene") == 0)
			tmpSceneOrder.push_back(obs_source_get_name(src));
	}

	//当前场景放在第一个
	if (currentScene)
	{
		std::string currentSceneName = obs_source_get_name(currentScene);
		auto x = std::find(tmpSceneOrder.begin(), tmpSceneOrder.end(), currentSceneName);
		assert(x != tmpSceneOrder.end());
		tmpSceneOrder.erase(x);
		tmpSceneOrder.push_front(obs_source_get_name(currentScene));
	}

	//保存场景顺序
	for (auto& x : tmpSceneOrder) {
		obs_data_t *data = obs_data_create();
		obs_data_set_string(data, "name", x.c_str());
		obs_data_array_push_back(sceneOrder, data);
		obs_data_release(data);
	}

	obs_source_release(currentScene);
#else
	for (int i = 0; i < ui->scenes->count(); i++) {
		obs_data_t *data = obs_data_create();
		obs_data_set_string(data, "name",
				QT_TO_UTF8(ui->scenes->item(i)->text()));
		obs_data_array_push_back(sceneOrder, data);
		obs_data_release(data);
	}
#endif

	return sceneOrder;
}
コード例 #3
0
ファイル: obs-scene.c プロジェクト: AnthonySuper/obs-studio
static void scene_save(void *data, obs_data_t *settings)
{
	struct obs_scene      *scene = data;
	obs_data_array_t      *array  = obs_data_array_create();
	struct obs_scene_item *item;

	full_lock(scene);

	item = scene->first_item;
	while (item) {
		scene_save_item(array, item);
		item = item->next;
	}

	full_unlock(scene);

	obs_data_set_array(settings, "items", array);
	obs_data_array_release(array);
}
コード例 #4
0
ファイル: obs.c プロジェクト: Lexsus/obs-studio
obs_data_array_t *obs_save_sources(void)
{
	obs_data_array_t *array;
	size_t i;

	if (!obs) return NULL;

	array = obs_data_array_create();

	pthread_mutex_lock(&obs->data.user_sources_mutex);

	for (i = 0; i < obs->data.user_sources.num; i++) {
		obs_source_t *source      = obs->data.user_sources.array[i];
		obs_data_t   *source_data = obs_save_source(source);

		obs_data_array_push_back(array, source_data);
		obs_data_release(source_data);
	}

	pthread_mutex_unlock(&obs->data.user_sources_mutex);

	return array;
}
コード例 #5
0
ファイル: scripts.cpp プロジェクト: Dead133/obs-studio
static void save_script_data(obs_data_t *save_data, bool saving, void *)
{
	if (!saving)
		return;

	obs_data_array_t *array = obs_data_array_create();

	for (OBSScript &script : scriptData->scripts) {
		const char *script_path = obs_script_get_path(script);
		obs_data_t *settings = obs_script_save(script);

		obs_data_t *obj = obs_data_create();
		obs_data_set_string(obj, "path", script_path);
		obs_data_set_obj(obj, "settings", settings);
		obs_data_array_push_back(array, obj);
		obs_data_release(obj);

		obs_data_release(settings);
	}

	obs_data_set_array(save_data, "scripts-tool", array);
	obs_data_array_release(array);
}