diff --git a/applets/taskmanager/package/contents/ui/PulseAudio.qml b/applets/taskmanager/package/contents/ui/PulseAudio.qml --- a/applets/taskmanager/package/contents/ui/PulseAudio.qml +++ b/applets/taskmanager/package/contents/ui/PulseAudio.qml @@ -26,17 +26,25 @@ signal streamsChanged - function streamsForPid(pid) { + function findStreams(key, value) { var streams = [] for (var i = 0, length = instantiator.count; i < length; ++i) { - var stream = instantiator.objectAt(i) - if (stream.pid == pid) { - streams.push(stream) + var stream = instantiator.objectAt(i); + if (stream[key] == value) { + streams.push(stream); } } return streams } + function streamsForAppName(appName) { + return findStreams("appName", appName); + } + + function streamsForPid(pid) { + return findStreams("pid", pid); + } + // QtObject has no default property, hence adding the Instantiator to one explicitly. property var instantiator: Instantiator { model: PulseObjectFilterModel { @@ -46,6 +54,7 @@ delegate: QtObject { readonly property int pid: Client ? Client.properties["application.process.id"] : 0 + readonly property string appName: Client ? Client.properties["application.name"] : "" readonly property bool muted: Muted // whether there is nothing actually going on on that stream readonly property bool corked: Corked diff --git a/applets/taskmanager/package/contents/ui/Task.qml b/applets/taskmanager/package/contents/ui/Task.qml --- a/applets/taskmanager/package/contents/ui/Task.qml +++ b/applets/taskmanager/package/contents/ui/Task.qml @@ -42,6 +42,7 @@ readonly property var m: model readonly property int pid: model.AppPid + readonly property string appName: model.AppName property int itemIndex: index property bool inPopup: false property bool isWindow: model.IsWindow === true @@ -75,6 +76,7 @@ acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MidButton onPidChanged: updateAudioStreams() + onAppNameChanged: updateAudioStreams() onIsWindowChanged: { if (isWindow) { @@ -195,18 +197,18 @@ } function updateAudioStreams() { - if (!pid) { - task.audioStreams = []; - return; - } - var pa = pulseAudio.item; if (!pa) { task.audioStreams = []; return; } - task.audioStreams = pa.streamsForPid(pid); + var streams = pa.streamsForPid(task.pid); + if (!streams.length) { + streams = pa.streamsForAppName(task.appName); + } + + task.audioStreams = streams; } function toggleMuted() {