[pulseaudio-commits] src/devicewidget.cc src/devicewidget.h src/pavucontrol.glade src/sinkwidget.cc
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Sep 20 01:37:22 UTC 2019
src/devicewidget.cc | 32 +++++++++++++++++++++++++-------
src/devicewidget.h | 9 +++++++++
src/pavucontrol.glade | 2 --
src/sinkwidget.cc | 11 ++++++-----
4 files changed, 40 insertions(+), 14 deletions(-)
New commits:
commit 2a1072cc2ba5523272c49a87a465853e6ecdbca3
Author: Tanu Kaskinen <tanuk at iki.fi>
Date: Thu Sep 19 15:21:26 2019 +0300
devicewidget: fix the enabling logic of the advanced options expander
The old logic disabled the expander always when a sink didn't have any
ports. That's bad if the sink has no ports but supports configuring
formats. That hasn't caused problems so far, but I have a patch for
module-null-sink that will enable format configuration support, and the
null sink has no ports, so it's affected by this issue.
This patch also changes things so that the expander is completely hidden
when it's disabled instead just setting it non-sensitive. I think that's
better (at least it saves some space).
diff --git a/src/devicewidget.cc b/src/devicewidget.cc
index b7405bb..e1b1869 100644
--- a/src/devicewidget.cc
+++ b/src/devicewidget.cc
@@ -33,7 +33,8 @@
/*** DeviceWidget ***/
DeviceWidget::DeviceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& x) :
MinimalStreamWidget(cobject),
- offsetButtonEnabled(false) {
+ offsetButtonEnabled(false),
+ mDigital(false) {
/* MinimalStreamWidget member variables. */
x->get_widget("deviceChannelsVBox", channelsVBox);
@@ -211,19 +212,17 @@ void DeviceWidget::prepareMenu() {
if (ports.size() > 0) {
portSelect->show();
- if (pa_context_get_server_protocol_version(get_context()) >= 27) {
+ if (pa_context_get_server_protocol_version(get_context()) >= 27)
offsetSelect->show();
- advancedOptions->set_sensitive(true);
- } else {
- /* advancedOptions has sensitive=false by default */
+ else
offsetSelect->hide();
- }
} else {
portSelect->hide();
- advancedOptions->set_sensitive(false);
offsetSelect->hide();
}
+
+ updateAdvancedOptionsVisibility();
}
bool DeviceWidget::onContextTriggerEvent(GdkEventButton* event) {
@@ -276,3 +275,22 @@ void DeviceWidget::renamePopup() {
}
delete dialog;
}
+
+void DeviceWidget::updateAdvancedOptionsVisibility() {
+ bool visible = false;
+
+ if (mDigital) {
+ /* We need to show the format configuration options. */
+ visible = true;
+ }
+
+ if (ports.size() > 0) {
+ /* We need to show the latency offset spin button. */
+ visible = true;
+ }
+
+ if (visible)
+ advancedOptions->show();
+ else
+ advancedOptions->hide();
+}
diff --git a/src/devicewidget.h b/src/devicewidget.h
index 30a6672..862834d 100644
--- a/src/devicewidget.h
+++ b/src/devicewidget.h
@@ -78,6 +78,11 @@ public:
protected:
MainWindow *mpMainWindow;
+ /* Shows or hides the advanced options expander depending on whether it's
+ * useful or not. This is called always after ports or mDigital have been
+ * updated. */
+ void updateAdvancedOptionsVisibility();
+
virtual void onPortChange() = 0;
Gtk::Menu contextMenu;
@@ -103,6 +108,10 @@ protected:
Glib::RefPtr<Gtk::ListStore> treeModel;
Glib::RefPtr<Gtk::Adjustment> offsetAdjustment;
+ /* Set to true for "digital" sinks (in practice this means those sinks that
+ * support format configuration). */
+ bool mDigital;
+
private:
Glib::ustring mDeviceType;
diff --git a/src/pavucontrol.glade b/src/pavucontrol.glade
index 96c35be..a66e193 100644
--- a/src/pavucontrol.glade
+++ b/src/pavucontrol.glade
@@ -419,8 +419,6 @@
</child>
<child>
<object class="GtkExpander" id="advancedOptions">
- <property name="visible">True</property>
- <property name="sensitive">False</property>
<property name="can_focus">True</property>
<child>
<object class="GtkVBox" id="vbox1">
diff --git a/src/sinkwidget.cc b/src/sinkwidget.cc
index f682cf2..b9002dd 100644
--- a/src/sinkwidget.cc
+++ b/src/sinkwidget.cc
@@ -168,14 +168,15 @@ void SinkWidget::onPortChange() {
}
void SinkWidget::setDigital(bool digital) {
+ mDigital = digital;
+
#if HAVE_EXT_DEVICE_RESTORE_API
- if (digital) {
+ if (digital)
encodingSelect->show();
- advancedOptions->set_sensitive(true);
- } else {
- /* advancedOptions has sensitive=false by default */
+ else
encodingSelect->hide();
- }
+
+ updateAdvancedOptionsVisibility();
#endif
}
More information about the pulseaudio-commits
mailing list