std::vector<T> obs_properties_get_list(obs_properties_t* props, const char* name, GetFuncT GetFunc) { obs_property_t* prop = obs_properties_get(props, name); if (prop) { if (obs_property_get_type(prop) == OBS_PROPERTY_LIST) { if (obs_property_list_format(prop) == formatId) { int count = obs_property_list_item_count(prop); std::vector<T> r; r.reserve(count); for (int i = 0; i < count; ++i) { r.push_back(std::make_pair(obs_property_list_item_name(prop, i), GetFunc(prop, i))); } return std::move(r); } } } return std::vector<T>(); }
void AutoConfigStreamPage::UpdateServerList() { QString serviceName = ui->service->currentText(); bool showMore = ui->service->currentData().toInt() == (int)ListOpt::ShowAll; if (showMore) { LoadServices(true); ui->service->showPopup(); return; } else { lastService = serviceName; } obs_properties_t *props = obs_get_service_properties("rtmp_common"); obs_property_t *services = obs_properties_get(props, "service"); OBSData settings = obs_data_create(); obs_data_release(settings); obs_data_set_string(settings, "service", QT_TO_UTF8(serviceName)); obs_property_modified(services, settings); obs_property_t *servers = obs_properties_get(props, "server"); ui->server->clear(); size_t servers_count = obs_property_list_item_count(servers); for (size_t i = 0; i < servers_count; i++) { const char *name = obs_property_list_item_name(servers, i); const char *server = obs_property_list_item_string(servers, i); ui->server->addItem(name, server); } obs_properties_destroy(props); }