[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [plasma-pa] src: Use unpretty channel name in speakertest
From:       Nicolas Fella <null () kde ! org>
Date:       2018-09-12 21:12:25
Message-ID: E1g0CQz-0006IJ-K1 () code ! kde ! org
[Download RAW message or body]

Git commit 7cd16db35a491e8e9e8591c5ef9327aef3172fcc by Nicolas Fella.
Committed on 12/09/2018 at 21:12.
Pushed by nicolasfella into branch 'master'.

Use unpretty channel name in speakertest

Summary:
The speaker test did not work when channel names were translated, e.g. "Front Left" \
=> "Vorne Links" because the comparison failed. Using pa_channel_position_to_string \
instead of pa_channel_position_to_pretty_string hopefully works better.

Reviewers: drosca, broulik

Reviewed By: broulik

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D14362

M  +16   -16   src/kcm/package/contents/ui/Advanced.qml
M  +2    -81   src/sink.cpp
M  +0    -6    src/sink.h
M  +5    -0    src/volumeobject.cpp
M  +14   -0    src/volumeobject.h

https://commits.kde.org/plasma-pa/7cd16db35a491e8e9e8591c5ef9327aef3172fcc

diff --git a/src/kcm/package/contents/ui/Advanced.qml \
b/src/kcm/package/contents/ui/Advanced.qml index e208006..c737ff4 100644
--- a/src/kcm/package/contents/ui/Advanced.qml
+++ b/src/kcm/package/contents/ui/Advanced.qml
@@ -147,8 +147,8 @@ ScrollView {
                 Button{
                     text: i18n("Front Left")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Front Left") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Front Left")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("front-left") > -1 : false +                    \
onClicked: sinks.pulseObject.testChannel("front-left")  }
             }
             Item {
@@ -158,8 +158,8 @@ ScrollView {
                 Button{
                     text: i18n("Front Center")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Front Center") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Front Center")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("front-center") > -1 : false +                  \
onClicked: sinks.pulseObject.testChannel("front-center")  }
             }
             Item {
@@ -169,8 +169,8 @@ ScrollView {
                 Button{
                     text: i18n("Front Right")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Front Right") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Front Right")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("front-right") > -1 : false +                   \
onClicked: sinks.pulseObject.testChannel("front-right")  }
             }
             Item {
@@ -180,8 +180,8 @@ ScrollView {
                 Button{
                     text: i18n("Side Left")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Side Left") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Side Left")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("side-left") > -1 : false +                    \
onClicked: sinks.pulseObject.testChannel("side-left")  
                 }
             }
@@ -206,8 +206,8 @@ ScrollView {
                 Button{
                     text: i18n("Side Right")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Side Right") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Side Right")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("side-right") > -1 : false +                    \
onClicked: sinks.pulseObject.testChannel("side-right")  }
             }
             Item {
@@ -216,8 +216,8 @@ ScrollView {
                 Button{
                     text: i18n("Rear Left")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Rear Left") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Rear Left")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("rear-left") > -1 : false +                    \
onClicked: sinks.pulseObject.testChannel("rear-left")  }
             }
             Item {
@@ -226,8 +226,8 @@ ScrollView {
                 Button{
                     text: i18n("Subwoofer")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Subwoofer") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Subwoofer")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("lfe") > -1 : false +                    \
onClicked: sinks.pulseObject.testChannel("subwoofer")  }
             }
             Item {
@@ -236,8 +236,8 @@ ScrollView {
                 Button{
                     text: i18n("Rear Right")
                     anchors.centerIn: parent
-                    visible: sinks.pulseObject ? \
                sinks.pulseObject.channels.indexOf("Rear Right") > -1 : false
-                    onClicked: sinks.pulseObject.testChannel("Rear Right")
+                    visible: sinks.pulseObject ? \
sinks.pulseObject.rawChannels.indexOf("rear-right") > -1 : false +                    \
onClicked: sinks.pulseObject.testChannel("rear-right")  }
             }
         }
diff --git a/src/sink.cpp b/src/sink.cpp
index b183c3a..78eaafd 100644
--- a/src/sink.cpp
+++ b/src/sink.cpp
@@ -82,53 +82,6 @@ void Sink::setDefault(bool enable)
     }
 }
 
-pa_channel_position_t Sink::channelNameToPosition(const QString &name)
-{
-    if (name == QLatin1String("Front Left")) {
-        return PA_CHANNEL_POSITION_FRONT_LEFT;
-    } else if (name == QLatin1String("Front Center")) {
-        return PA_CHANNEL_POSITION_FRONT_CENTER;
-    } else if (name == QLatin1String("Front Right")) {
-        return PA_CHANNEL_POSITION_FRONT_RIGHT;
-    } else if (name == QLatin1String("Side Left")) {
-        return PA_CHANNEL_POSITION_SIDE_LEFT;
-    } else if (name == QLatin1String("Side Right")) {
-        return PA_CHANNEL_POSITION_SIDE_RIGHT;
-    } else if (name == QLatin1String("Rear Left")) {
-        return PA_CHANNEL_POSITION_REAR_LEFT;
-    } else if (name == QLatin1String("Rear Right")) {
-        return PA_CHANNEL_POSITION_REAR_RIGHT;
-    } else if (name == QLatin1String("Subwoofer")) {
-        return PA_CHANNEL_POSITION_SUBWOOFER;
-    }
-
-    return PA_CHANNEL_POSITION_MONO;
-}
-
-QString Sink::positionToChannelName(pa_channel_position_t position)
-{
-    switch (position) {
-    case PA_CHANNEL_POSITION_FRONT_LEFT:
-        return QStringLiteral("Front Left");
-    case PA_CHANNEL_POSITION_FRONT_RIGHT:
-        return QStringLiteral("Front Right");
-    case PA_CHANNEL_POSITION_FRONT_CENTER:
-        return QStringLiteral("Front Center");
-    case PA_CHANNEL_POSITION_SIDE_LEFT:
-        return QStringLiteral("Side Left");
-    case PA_CHANNEL_POSITION_SIDE_RIGHT:
-        return QStringLiteral("Side Right");
-    case PA_CHANNEL_POSITION_REAR_LEFT:
-        return QStringLiteral("Rear Left");
-    case PA_CHANNEL_POSITION_REAR_RIGHT:
-        return QStringLiteral("Rear Right");
-    case PA_CHANNEL_POSITION_SUBWOOFER:
-        return QStringLiteral("Subwoofer");
-    default:
-        return QStringLiteral("Mono");
-    }
-}
-
 void Sink::testChannel(const QString &name)
 {
     auto context = CanberraContext::instance()->canberra();
@@ -139,13 +92,13 @@ void Sink::testChannel(const QString &name)
     snprintf(dev, sizeof(dev), "%lu", (unsigned long) m_index);
     ca_context_change_device(context, dev);
 
-    QString sound_name =  QStringLiteral("audio-channel-") + \
positionAsString(channelNameToPosition(name)); +    QString sound_name =  \
QStringLiteral("audio-channel-") + name;  ca_proplist *proplist;
     ca_proplist_create(&proplist);
 
     ca_proplist_sets(proplist, CA_PROP_MEDIA_ROLE, "test");
     ca_proplist_sets(proplist, CA_PROP_MEDIA_NAME, name.toLatin1().constData());
-    ca_proplist_sets(proplist, CA_PROP_CANBERRA_FORCE_CHANNEL, \
positionAsString(channelNameToPosition(name)).toLatin1().data()); +    \
ca_proplist_sets(proplist, CA_PROP_CANBERRA_FORCE_CHANNEL, name.toLatin1().data());  \
ca_proplist_sets(proplist, CA_PROP_CANBERRA_ENABLE, "1");  
     ca_proplist_sets(proplist, CA_PROP_EVENT_ID, sound_name.toLatin1().data());
@@ -163,36 +116,4 @@ void Sink::testChannel(const QString &name)
     ca_proplist_destroy(proplist);
 }
 
-QString Sink::positionAsString(pa_channel_position_t pos)
-{
-    switch (pos) {
-    case PA_CHANNEL_POSITION_FRONT_LEFT:
-        return QStringLiteral("front-left");
-    case PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER:
-        return QStringLiteral("front-left-of-center");
-    case PA_CHANNEL_POSITION_FRONT_CENTER:
-        return QStringLiteral("front-center");
-    case PA_CHANNEL_POSITION_MONO:
-        return QStringLiteral("mono");
-    case PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER:
-        return QStringLiteral("front-right-of-center");
-    case PA_CHANNEL_POSITION_FRONT_RIGHT:
-        return QStringLiteral("front-right");
-    case PA_CHANNEL_POSITION_SIDE_LEFT:
-        return QStringLiteral("side-left");
-    case PA_CHANNEL_POSITION_SIDE_RIGHT:
-        return QStringLiteral("side-right");
-    case PA_CHANNEL_POSITION_REAR_LEFT:
-        return QStringLiteral("rear-left");
-    case PA_CHANNEL_POSITION_REAR_CENTER:
-        return QStringLiteral("rear-center");
-    case PA_CHANNEL_POSITION_REAR_RIGHT:
-        return QStringLiteral("rear-right");
-    case PA_CHANNEL_POSITION_SUBWOOFER:
-        return QStringLiteral("subwoofer");
-    default:
-        break;
-    }
-    return QStringLiteral("invalid");
-}
 } // QPulseAudio
diff --git a/src/sink.h b/src/sink.h
index 115d702..9cb5114 100644
--- a/src/sink.h
+++ b/src/sink.h
@@ -46,12 +46,6 @@ public:
 
 public Q_SLOTS:
     void testChannel(const QString &name);
-
-private:
-    pa_channel_position_t channelNameToPosition(const QString &name);
-    QString positionToChannelName(pa_channel_position_t position);
-    QString positionAsString(pa_channel_position_t pos);
-
 };
 
 } // QPulseAudio
diff --git a/src/volumeobject.cpp b/src/volumeobject.cpp
index 33cc100..c4055b3 100644
--- a/src/volumeobject.cpp
+++ b/src/volumeobject.cpp
@@ -66,6 +66,11 @@ QStringList VolumeObject::channels() const
     return m_channels;
 }
 
+QStringList VolumeObject::rawChannels() const
+{
+    return m_rawChannels;
+}
+
 QList<qreal> VolumeObject::channelVolumes() const
 {
     QList<qreal> ret;
diff --git a/src/volumeobject.h b/src/volumeobject.h
index 4208610..8cc9875 100644
--- a/src/volumeobject.h
+++ b/src/volumeobject.h
@@ -36,6 +36,7 @@ class VolumeObject : public PulseObject
     Q_PROPERTY(bool hasVolume READ hasVolume NOTIFY hasVolumeChanged)
     Q_PROPERTY(bool volumeWritable READ isVolumeWritable NOTIFY \
isVolumeWritableChanged)  Q_PROPERTY(QStringList channels READ channels NOTIFY \
channelsChanged) +    Q_PROPERTY(QStringList rawChannels READ rawChannels NOTIFY \
                rawChannelsChanged)
     Q_PROPERTY(QList<qreal> channelVolumes READ channelVolumes NOTIFY \
channelVolumesChanged)  public:
     explicit VolumeObject(QObject *parent);
@@ -63,6 +64,16 @@ public:
             m_channels = infoChannels;
             Q_EMIT channelsChanged();
         }
+
+        QStringList infoRawChannels;
+        infoRawChannels.reserve(info->channel_map.channels);
+        for (int i = 0; i < info->channel_map.channels; ++i) {
+            infoRawChannels << \
QString::fromUtf8(pa_channel_position_to_string(info->channel_map.map[i])); +        \
} +        if (m_rawChannels != infoRawChannels) {
+            m_rawChannels = infoRawChannels;
+            Q_EMIT rawChannelsChanged();
+        }
     }
 
     qint64 volume() const;
@@ -75,6 +86,7 @@ public:
     bool isVolumeWritable() const;
 
     QStringList channels() const;
+    QStringList rawChannels() const;
     QList<qreal> channelVolumes() const;
     Q_INVOKABLE virtual void setChannelVolume(int channel, qint64 volume) = 0;
 
@@ -84,6 +96,7 @@ Q_SIGNALS:
     void hasVolumeChanged();
     void isVolumeWritableChanged();
     void channelsChanged();
+    void rawChannelsChanged();
     void channelVolumesChanged();
 
 protected:
@@ -94,6 +107,7 @@ protected:
     bool m_hasVolume;
     bool m_volumeWritable;
     QStringList m_channels;
+    QStringList m_rawChannels;
 };
 
 } // QPulseAudio


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic