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

Function FrameRateChanged

plugins/scripting/utils/properties-view.cpp:1843–1902  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1841}
1842
1843static bool FrameRateChanged(QWidget *widget, const char *name,
1844 OBSData &settings)
1845{
1846 auto w = qobject_cast<OBSFrameRatePropertyWidget *>(widget);
1847 if (!w)
1848 return false;
1849
1850 auto variant = w->modeSelect->currentData();
1851 if (!variant.canConvert<frame_rate_tag>())
1852 return false;
1853
1854 auto StopUpdating = [&](void *) {
1855 w->updating = false;
1856 };
1857 unique_ptr<void, decltype(StopUpdating)> signalGuard(
1858 static_cast<void *>(w), StopUpdating);
1859 w->updating = true;
1860
1861 if (!obs_data_has_user_value(settings, name))
1862 obs_data_set_obj(settings, name, nullptr);
1863
1864 unique_ptr<obs_data_item_t> obj{obs_data_item_byname(settings, name)};
1865 auto obj_ptr = obj.get();
1866 auto CheckObj = [&]() {
1867 if (!obj_ptr)
1868 obj.release();
1869 };
1870
1871 const char *option = nullptr;
1872 obs_data_item_get_frames_per_second(obj.get(), nullptr, &option);
1873
1874 media_frames_per_second fps{};
1875 media_frames_per_second *valid_fps = nullptr;
1876 if (obs_data_item_get_frames_per_second(obj.get(), &fps, nullptr))
1877 valid_fps = &fps;
1878
1879 auto tag = variant.value<frame_rate_tag>();
1880 switch (tag.type) {
1881 case frame_rate_tag::SIMPLE:
1882 if (!FrameRateChangedCommon(w, obj_ptr, valid_fps))
1883 return false;
1884 break;
1885
1886 case frame_rate_tag::RATIONAL:
1887 if (!FrameRateChangedRational(w, obj_ptr, valid_fps))
1888 return false;
1889 break;
1890
1891 case frame_rate_tag::USER:
1892 if (tag.val && option && strcmp(tag.val, option) == 0)
1893 return false;
1894
1895 obs_data_item_set_frames_per_second(&obj_ptr, {}, tag.val);
1896 break;
1897 }
1898
1899 UpdateFPSLabels(w);
1900 CheckObj();

Callers 1

ControlChangedMethod · 0.85

Calls 5

FrameRateChangedCommonFunction · 0.85
FrameRateChangedRationalFunction · 0.85
UpdateFPSLabelsFunction · 0.85
releaseMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected