12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #include "DeviceCaptureToolbar.hpp"
- #include "ui_device-select-toolbar.h"
- #include "moc_DeviceCaptureToolbar.cpp"
- DeviceCaptureToolbar::DeviceCaptureToolbar(QWidget *parent, OBSSource source)
- : QWidget(parent),
- weakSource(OBSGetWeakRef(source)),
- ui(new Ui_DeviceSelectToolbar)
- {
- ui->setupUi(this);
- delete ui->deviceLabel;
- delete ui->device;
- ui->deviceLabel = nullptr;
- ui->device = nullptr;
- OBSDataAutoRelease settings = obs_source_get_settings(source);
- active = obs_data_get_bool(settings, "active");
- obs_module_t *mod = obs_get_module("win-dshow");
- if (!mod)
- return;
- activateText = obs_module_get_locale_text(mod, "Activate");
- deactivateText = obs_module_get_locale_text(mod, "Deactivate");
- ui->activateButton->setText(active ? deactivateText : activateText);
- }
- DeviceCaptureToolbar::~DeviceCaptureToolbar() {}
- void DeviceCaptureToolbar::on_activateButton_clicked()
- {
- OBSSource source = OBSGetStrongRef(weakSource);
- if (!source) {
- return;
- }
- OBSDataAutoRelease settings = obs_source_get_settings(source);
- bool now_active = obs_data_get_bool(settings, "active");
- bool desyncedSetting = now_active != active;
- active = !active;
- const char *text = active ? deactivateText : activateText;
- ui->activateButton->setText(text);
- if (desyncedSetting) {
- return;
- }
- calldata_t cd = {};
- calldata_set_bool(&cd, "active", active);
- proc_handler_t *ph = obs_source_get_proc_handler(source);
- proc_handler_call(ph, "activate", &cd);
- calldata_free(&cd);
- }
|