| 1515 | } |
| 1516 | |
| 1517 | void OBSPropertiesView::AddFrameRate(obs_property_t *prop, bool &warning, |
| 1518 | QFormLayout *layout, QLabel *&label) |
| 1519 | { |
| 1520 | const char *name = obs_property_name(prop); |
| 1521 | bool enabled = obs_property_enabled(prop); |
| 1522 | unique_ptr<obs_data_item_t> obj{obs_data_item_byname(settings, name)}; |
| 1523 | |
| 1524 | const char *option = nullptr; |
| 1525 | obs_data_item_get_frames_per_second(obj.get(), nullptr, &option); |
| 1526 | |
| 1527 | media_frames_per_second fps{}; |
| 1528 | media_frames_per_second *valid_fps = nullptr; |
| 1529 | if (obs_data_item_get_frames_per_second(obj.get(), &fps, nullptr)) |
| 1530 | valid_fps = &fps; |
| 1531 | |
| 1532 | frame_rate_ranges_t fps_ranges; |
| 1533 | size_t num = obs_property_frame_rate_fps_ranges_count(prop); |
| 1534 | fps_ranges.reserve(num); |
| 1535 | for (size_t i = 0; i < num; i++) |
| 1536 | fps_ranges.emplace_back( |
| 1537 | obs_property_frame_rate_fps_range_min(prop, i), |
| 1538 | obs_property_frame_rate_fps_range_max(prop, i)); |
| 1539 | |
| 1540 | auto widget = CreateFrameRateWidget(prop, warning, option, valid_fps, |
| 1541 | fps_ranges); |
| 1542 | auto info = new WidgetInfo(this, prop, widget); |
| 1543 | |
| 1544 | widget->setToolTip(QT_UTF8(obs_property_long_description(prop))); |
| 1545 | |
| 1546 | widget->name = name; |
| 1547 | widget->settings = settings; |
| 1548 | |
| 1549 | widget->modeSelect->setEnabled(enabled); |
| 1550 | widget->simpleFPS->setEnabled(enabled); |
| 1551 | widget->fpsRange->setEnabled(enabled); |
| 1552 | widget->numEdit->setEnabled(enabled); |
| 1553 | widget->denEdit->setEnabled(enabled); |
| 1554 | |
| 1555 | label = widget->warningLabel = |
| 1556 | new QLabel{obs_property_description(prop)}; |
| 1557 | |
| 1558 | layout->addRow(label, widget); |
| 1559 | |
| 1560 | children.emplace_back(info); |
| 1561 | |
| 1562 | UpdateFPSLabels(widget); |
| 1563 | |
| 1564 | auto stack = widget->modeDisplay; |
| 1565 | auto combo = widget->modeSelect; |
| 1566 | |
| 1567 | stack->setToolTip(QT_UTF8(obs_property_long_description(prop))); |
| 1568 | combo->setToolTip(QT_UTF8(obs_property_long_description(prop))); |
| 1569 | |
| 1570 | auto comboIndexChanged = static_cast<void (QComboBox::*)(int)>( |
| 1571 | &QComboBox::currentIndexChanged); |
| 1572 | connect(combo, comboIndexChanged, stack, [=](int index) { |
| 1573 | bool out_of_bounds = index >= stack->count(); |
| 1574 | auto idx = out_of_bounds ? stack->count() - 1 : index; |
nothing calls this directly
no test coverage detected