From 1bae6f3c18c5abf9f263c0bb6196233a1608c4b5 Mon Sep 17 00:00:00 2001 From: Shaolin Date: Tue, 12 Sep 2017 03:28:29 -0700 Subject: [PATCH] UI: Enable audio monitoring on linux if pulse available Closes jp9000/obs-studio#940 --- UI/adv-audio-control.cpp | 10 +++++----- UI/window-basic-adv-audio.cpp | 2 +- UI/window-basic-settings.cpp | 26 +++++++++++--------------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/UI/adv-audio-control.cpp b/UI/adv-audio-control.cpp index b7bfd4d08..531b00173 100644 --- a/UI/adv-audio-control.cpp +++ b/UI/adv-audio-control.cpp @@ -32,7 +32,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_) volume = new QSpinBox(); forceMono = new QCheckBox(); panning = new QSlider(Qt::Horizontal); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO monitoringType = new QComboBox(); #endif syncOffset = new QSpinBox(); @@ -93,7 +93,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_) syncOffset->setValue(int(cur_sync / NSEC_PER_MSEC)); int idx; -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.None"), (int)OBS_MONITORING_TYPE_NONE); monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.MonitorOnly"), @@ -138,7 +138,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_) this, SLOT(panningChanged(int))); QWidget::connect(syncOffset, SIGNAL(valueChanged(int)), this, SLOT(syncOffsetChanged(int))); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO QWidget::connect(monitoringType, SIGNAL(currentIndexChanged(int)), this, SLOT(monitoringTypeChanged(int))); #endif @@ -163,7 +163,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_) layout->addWidget(forceMonoContainer, lastRow, idx++); layout->addWidget(panningContainer, lastRow, idx++); layout->addWidget(syncOffset, lastRow, idx++); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO layout->addWidget(monitoringType, lastRow, idx++); #endif layout->addWidget(mixerContainer, lastRow, idx++); @@ -178,7 +178,7 @@ OBSAdvAudioCtrl::~OBSAdvAudioCtrl() forceMonoContainer->deleteLater(); panningContainer->deleteLater(); syncOffset->deleteLater(); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO monitoringType->deleteLater(); #endif mixerContainer->deleteLater(); diff --git a/UI/window-basic-adv-audio.cpp b/UI/window-basic-adv-audio.cpp index 33fe0cb5a..2894f6bf2 100644 --- a/UI/window-basic-adv-audio.cpp +++ b/UI/window-basic-adv-audio.cpp @@ -42,7 +42,7 @@ OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent) label = new QLabel(QTStr("Basic.AdvAudio.SyncOffset")); label->setAlignment(Qt::AlignHCenter); mainLayout->addWidget(label, 0, idx++); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO label = new QLabel(QTStr("Basic.AdvAudio.Monitoring")); label->setAlignment(Qt::AlignHCenter); mainLayout->addWidget(label, 0, idx++); diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 41a64f93a..a25ba24eb 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -410,7 +410,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->colorRange, COMBO_CHANGED, ADV_CHANGED); HookWidget(ui->disableOSXVSync, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->resetOSXVSync, CHECK_CHANGED, ADV_CHANGED); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO HookWidget(ui->monitoringDevice, COMBO_CHANGED, ADV_CHANGED); #endif #ifdef _WIN32 @@ -431,15 +431,11 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->enableNewSocketLoop, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED); -#if !defined(_WIN32) && !defined(__APPLE__) - delete ui->monitoringDevice; - delete ui->monitoringDeviceLabel; - delete ui->advAudioGroupBox; +#if !defined(_WIN32) && !defined(__APPLE__) && !HAVE_PULSEAUDIO delete ui->enableAutoUpdates; - ui->monitoringDevice = nullptr; - ui->monitoringDeviceLabel = nullptr; - ui->advAudioGroupBox = nullptr; + delete ui->advAudioGroupBox; ui->enableAutoUpdates = nullptr; + ui->advAudioGroupBox = nullptr; #endif #ifdef _WIN32 @@ -485,7 +481,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) delete ui->advancedGeneralGroupBox; delete ui->enableNewSocketLoop; delete ui->enableLowLatencyMode; -#ifdef __APPLE__ +#if defined(__APPLE__) || HAVE_PULSEAUDIO delete ui->disableAudioDucking; #endif ui->rendererLabel = nullptr; @@ -497,7 +493,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) ui->advancedGeneralGroupBox = nullptr; ui->enableNewSocketLoop = nullptr; ui->enableLowLatencyMode = nullptr; -#ifdef __APPLE__ +#if defined(__APPLE__) || HAVE_PULSEAUDIO ui->disableAudioDucking = nullptr; #endif #endif @@ -584,7 +580,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) FillSimpleRecordingValues(); FillSimpleStreamingValues(); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO FillAudioMonitoringDevices(); #endif @@ -2026,7 +2022,7 @@ void OBSBasicSettings::LoadAdvancedSettings() "Video", "ColorSpace"); const char *videoColorRange = config_get_string(main->Config(), "Video", "ColorRange"); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO const char *monDevName = config_get_string(main->Config(), "Audio", "MonitoringDeviceName"); const char *monDevId = config_get_string(main->Config(), "Audio", @@ -2058,7 +2054,7 @@ void OBSBasicSettings::LoadAdvancedSettings() LoadRendererList(); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO if (!SetComboByValue(ui->monitoringDevice, monDevId)) SetInvalidValue(ui->monitoringDevice, monDevName, monDevId); #endif @@ -2622,7 +2618,7 @@ void OBSBasicSettings::SaveAdvancedSettings() SaveCombo(ui->colorFormat, "Video", "ColorFormat"); SaveCombo(ui->colorSpace, "Video", "ColorSpace"); SaveComboData(ui->colorRange, "Video", "ColorRange"); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO SaveCombo(ui->monitoringDevice, "Audio", "MonitoringDeviceName"); SaveComboData(ui->monitoringDevice, "Audio", "MonitoringDeviceId"); #endif @@ -2648,7 +2644,7 @@ void OBSBasicSettings::SaveAdvancedSettings() SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries"); SaveComboData(ui->bindToIP, "Output", "BindIP"); -#if defined(_WIN32) || defined(__APPLE__) +#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO QString newDevice = ui->monitoringDevice->currentData().toString(); if (lastMonitoringDevice != newDevice) {