diff --git a/obs/window-basic-adv-audio.cpp b/obs/window-basic-adv-audio.cpp index 43f53d837..9d2dff45f 100644 --- a/obs/window-basic-adv-audio.cpp +++ b/obs/window-basic-adv-audio.cpp @@ -82,6 +82,12 @@ OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent) setAttribute(Qt::WA_DeleteOnClose, true); } +OBSBasicAdvAudio::~OBSBasicAdvAudio() +{ + for (size_t i = 0; i < controls.size(); ++i) + delete controls[i]; +} + bool OBSBasicAdvAudio::EnumSources(void *param, obs_source_t *source) { OBSBasicAdvAudio *dialog = reinterpret_cast(param); diff --git a/obs/window-basic-adv-audio.hpp b/obs/window-basic-adv-audio.hpp index 25e36964b..3ec60c79d 100644 --- a/obs/window-basic-adv-audio.hpp +++ b/obs/window-basic-adv-audio.hpp @@ -33,4 +33,5 @@ public slots: public: OBSBasicAdvAudio(QWidget *parent); + ~OBSBasicAdvAudio(); }; diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 9aa3ba45b..085a1d2a5 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -1651,9 +1651,17 @@ void OBSBasic::on_action_Settings_triggered() void OBSBasic::on_actionAdvAudioProperties_triggered() { + if (advAudioWindow != nullptr) { + advAudioWindow->raise(); + return; + } + advAudioWindow = new OBSBasicAdvAudio(this); advAudioWindow->show(); advAudioWindow->setAttribute(Qt::WA_DeleteOnClose, true); + + connect(advAudioWindow, SIGNAL(destroyed()), + this, SLOT(on_advAudioProps_destroyed())); } void OBSBasic::on_advAudioProps_clicked() @@ -1661,6 +1669,11 @@ void OBSBasic::on_advAudioProps_clicked() on_actionAdvAudioProperties_triggered(); } +void OBSBasic::on_advAudioProps_destroyed() +{ + advAudioWindow = nullptr; +} + void OBSBasic::on_scenes_currentItemChanged(QListWidgetItem *current, QListWidgetItem *prev) { diff --git a/obs/window-basic-main.hpp b/obs/window-basic-main.hpp index 68524bd17..b74c4e449 100644 --- a/obs/window-basic-main.hpp +++ b/obs/window-basic-main.hpp @@ -234,6 +234,7 @@ private slots: void on_action_Settings_triggered(); void on_actionAdvAudioProperties_triggered(); void on_advAudioProps_clicked(); + void on_advAudioProps_destroyed(); void on_actionShowLogs_triggered(); void on_actionUploadCurrentLog_triggered(); void on_actionUploadLastLog_triggered();