Skip to content

Commit

Permalink
UI: Use signal vector for advanced audio dialog
Browse files Browse the repository at this point in the history
Simplifies code by using a vector instead of individual signals.
  • Loading branch information
cg2121 authored and Lain-B committed Aug 18, 2024
1 parent 7a90c80 commit f07d2cd
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 67 deletions.
36 changes: 15 additions & 21 deletions UI/adv-audio-control.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,28 +51,22 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
mixer5 = new QCheckBox();
mixer6 = new QCheckBox();

activateSignal.Connect(handler, "activate", OBSSourceActivated, this);
deactivateSignal.Connect(handler, "deactivate", OBSSourceDeactivated,
this);
audioActivateSignal.Connect(handler, "audio_activate",
OBSSourceActivated, this);
audioDeactivateSignal.Connect(handler, "audio_deactivate",
OBSSourceDeactivated, this);
volChangedSignal.Connect(handler, "volume", OBSSourceVolumeChanged,
this);
syncOffsetSignal.Connect(handler, "audio_sync", OBSSourceSyncChanged,
this);
flagsSignal.Connect(handler, "update_flags", OBSSourceFlagsChanged,
this);
sigs.emplace_back(handler, "activate", OBSSourceActivated, this);
sigs.emplace_back(handler, "deactivate", OBSSourceDeactivated, this);
sigs.emplace_back(handler, "audio_activate", OBSSourceActivated, this);
sigs.emplace_back(handler, "audio_deactivate", OBSSourceDeactivated,
this);
sigs.emplace_back(handler, "volume", OBSSourceVolumeChanged, this);
sigs.emplace_back(handler, "audio_sync", OBSSourceSyncChanged, this);
sigs.emplace_back(handler, "update_flags", OBSSourceFlagsChanged, this);
if (obs_audio_monitoring_available())
monitoringTypeSignal.Connect(handler, "audio_monitoring",
OBSSourceMonitoringTypeChanged,
this);
mixersSignal.Connect(handler, "audio_mixers", OBSSourceMixersChanged,
this);
balChangedSignal.Connect(handler, "audio_balance",
OBSSourceBalanceChanged, this);
renameSignal.Connect(handler, "rename", OBSSourceRenamed, this);
sigs.emplace_back(handler, "audio_monitoring",
OBSSourceMonitoringTypeChanged, this);
sigs.emplace_back(handler, "audio_mixers", OBSSourceMixersChanged,
this);
sigs.emplace_back(handler, "audio_balance", OBSSourceBalanceChanged,
this);
sigs.emplace_back(handler, "rename", OBSSourceRenamed, this);

hlayout = new QHBoxLayout();
hlayout->setContentsMargins(0, 0, 0, 0);
Expand Down
12 changes: 1 addition & 11 deletions UI/adv-audio-control.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,7 @@ class OBSAdvAudioCtrl : public QObject {
QPointer<QCheckBox> mixer5;
QPointer<QCheckBox> mixer6;

OBSSignal volChangedSignal;
OBSSignal syncOffsetSignal;
OBSSignal flagsSignal;
OBSSignal monitoringTypeSignal;
OBSSignal mixersSignal;
OBSSignal activateSignal;
OBSSignal deactivateSignal;
OBSSignal audioActivateSignal;
OBSSignal audioDeactivateSignal;
OBSSignal balChangedSignal;
OBSSignal renameSignal;
std::vector<OBSSignal> sigs;

static void OBSSourceActivated(void *param, calldata_t *calldata);
static void OBSSourceDeactivated(void *param, calldata_t *calldata);
Expand Down
50 changes: 19 additions & 31 deletions UI/window-basic-adv-audio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,17 @@ Q_DECLARE_METATYPE(OBSSource);
OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent)
: QDialog(parent),
ui(new Ui::OBSAdvAudio),
sourceAddedSignal(obs_get_signal_handler(), "source_audio_activate",
OBSSourceAdded, this),
sourceRemovedSignal(obs_get_signal_handler(),
"source_audio_deactivate", OBSSourceRemoved,
this),
sourceActivatedSignal(obs_get_signal_handler(), "source_activate",
OBSSourceActivated, this),
sourceDeactivatedSignal(obs_get_signal_handler(), "source_deactivate",
OBSSourceRemoved, this),
showInactive(false)
{
ui->setupUi(this);

signal_handler_t *sh = obs_get_signal_handler();
sigs.emplace_back(sh, "source_audio_activate", OBSSourceAdded, this);
sigs.emplace_back(sh, "source_audio_deactivate", OBSSourceRemoved,
this);
sigs.emplace_back(sh, "source_activate", OBSSourceActivated, this);
sigs.emplace_back(sh, "source_deactivate", OBSSourceRemoved, this);

VolumeType volType = (VolumeType)config_get_int(
GetGlobalConfig(), "BasicWindow", "AdvAudioVolumeType");

Expand Down Expand Up @@ -158,35 +156,25 @@ void OBSBasicAdvAudio::SetShowInactive(bool show)

showInactive = show;

sourceAddedSignal.Disconnect();
sourceRemovedSignal.Disconnect();
sourceActivatedSignal.Disconnect();
sourceDeactivatedSignal.Disconnect();
sigs.clear();
signal_handler_t *sh = obs_get_signal_handler();

if (showInactive) {
sourceAddedSignal.Connect(obs_get_signal_handler(),
"source_create", OBSSourceAdded,
this);
sourceRemovedSignal.Connect(obs_get_signal_handler(),
"source_remove", OBSSourceRemoved,
this);
sigs.emplace_back(sh, "source_create", OBSSourceAdded, this);
sigs.emplace_back(sh, "source_remove", OBSSourceRemoved, this);

obs_enum_sources(EnumSources, this);

SetIconsVisible(showVisible);
} else {
sourceAddedSignal.Connect(obs_get_signal_handler(),
"source_audio_activate",
OBSSourceAdded, this);
sourceRemovedSignal.Connect(obs_get_signal_handler(),
"source_audio_deactivate",
OBSSourceRemoved, this);
sourceActivatedSignal.Connect(obs_get_signal_handler(),
"source_activate",
OBSSourceActivated, this);
sourceDeactivatedSignal.Connect(obs_get_signal_handler(),
"source_deactivate",
OBSSourceRemoved, this);
sigs.emplace_back(sh, "source_audio_activate", OBSSourceAdded,
this);
sigs.emplace_back(sh, "source_audio_deactivate",
OBSSourceRemoved, this);
sigs.emplace_back(sh, "source_activate", OBSSourceActivated,
this);
sigs.emplace_back(sh, "source_deactivate", OBSSourceRemoved,
this);

for (size_t i = 0; i < controls.size(); i++) {
const auto source = controls[i]->GetSource();
Expand Down
5 changes: 1 addition & 4 deletions UI/window-basic-adv-audio.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@ class OBSBasicAdvAudio : public QDialog {
Q_OBJECT

private:
OBSSignal sourceAddedSignal;
OBSSignal sourceRemovedSignal;
OBSSignal sourceActivatedSignal;
OBSSignal sourceDeactivatedSignal;
std::vector<OBSSignal> sigs;
bool showInactive;
bool showVisible;

Expand Down

0 comments on commit f07d2cd

Please sign in to comment.