rbn42 / panon

An Audio Visualizer Widget in KDE Plasma
GNU General Public License v3.0
191 stars 31 forks source link

[BUG] Mixing All Speakers option shows only audio outputs added before panon started #60

Open marekvospel opened 3 years ago

marekvospel commented 3 years ago

Desktop (please complete the following information):

Describe the bug Panon only detects new devices when it starts. If a bluetooth / jack / different audio output device is connected while panon is already running, panon won't react to that output stream.

Steps to reproduce

rbn42 commented 3 years ago

It is possible to add this feature (or fix the bug), as far as panon can capture the event when a new device is connected. I believe "org.kde.plasma.private.volume" can capture this event, with its "PulseObject.Ports.length" I guess. But I cannot find its documentation on kde.org to make it work.

rbn42 commented 3 years ago

Specifically, I see Zren using these variables in volumewin7mixer. PulseObject.channels: https://github.com/Zren/plasma-applet-volumewin7mixer/blob/e66e2918bc7572c189f86c4367ae6f21db7b5af0/package/contents/ui/MixerItem.qml#L28 PulseObject.ports: https://github.com/Zren/plasma-applet-volumewin7mixer/blob/e66e2918bc7572c189f86c4367ae6f21db7b5af0/package/contents/ui/MixerItem.qml#L157 But I am not able to import them into panon. conlose.log() shows theses variables are undefined. Does anyone has a clue? What is the correct way to use these APIs?

rbn42 commented 3 years ago

Hi @Zren, could you please give me some advice? or a link to the documentation of this PulseObject variable. Thanks.

Zren commented 3 years ago
Zren commented 3 years ago

SinkModel, SourceModel etc, inherit AbstractModel, which is an "array" where the child items only have one property, which can be referenced as model.PulseObject in a ListModel, or just as PulseObject.

https://invent.kde.org/plasma/plasma-pa/-/blob/master/src/pulseaudio.cpp#L119