* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/
@ 2018-07-10 12:04 Andreas Sturmlechner
0 siblings, 0 replies; 7+ messages in thread
From: Andreas Sturmlechner @ 2018-07-10 12:04 UTC (permalink / raw
To: gentoo-commits
commit: 147c481052b49857b769ea00be8518698365578e
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Jul 10 12:02:30 2018 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Jul 10 12:04:28 2018 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=147c4810
kde-plasma/plasma-pa: Fix wrong availability of profiles and ports
Upstream commit b97846017df57698f9e77c8aab077d5a3f17e7ea
Package-Manager: Portage-2.3.41, Repoman-2.3.9
.../files/plasma-pa-5.13.3-wrong-port-avail.patch | 100 +++++++++++++++++++++
kde-plasma/plasma-pa/plasma-pa-5.13.3.ebuild | 2 +
2 files changed, 102 insertions(+)
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-wrong-port-avail.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-wrong-port-avail.patch
new file mode 100644
index 00000000000..7670ec7c7d0
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-wrong-port-avail.patch
@@ -0,0 +1,100 @@
+From b97846017df57698f9e77c8aab077d5a3f17e7ea Mon Sep 17 00:00:00 2001
+From: Andreas Krutzler <andi.krutzler@gmail.com>
+Date: Fri, 29 Jun 2018 09:39:28 +0200
+Subject: Fix wrong availability of profiles and ports.
+
+Summary: Fixed bug where available ports are displayed as unavailable/unplugged and vice versa. It seems that this bug was introduced with D9671.
+
+Reviewers: nicolasfella, broulik, drosca
+
+Subscribers: plasma-devel
+
+Tags: #plasma
+
+Differential Revision: https://phabricator.kde.org/D13694
+---
+ src/port.h | 13 ++++++++++++-
+ src/profile.h | 30 ++++++++++++++++++------------
+ 2 files changed, 30 insertions(+), 13 deletions(-)
+
+diff --git a/src/port.h b/src/port.h
+index 8a8126e..bbf32db 100644
+--- a/src/port.h
++++ b/src/port.h
+@@ -40,7 +40,18 @@ public:
+ template<typename PAInfo>
+ void setInfo(const PAInfo *info)
+ {
+- Profile::setInfo(info);
++ Availability newAvailability;
++ switch (info->available) {
++ case PA_PORT_AVAILABLE_NO:
++ newAvailability = Unavailable;
++ break;
++ case PA_PORT_AVAILABLE_YES:
++ newAvailability = Available;
++ break;
++ default:
++ newAvailability = Unknown;
++ }
++ setCommonInfo(info, newAvailability);
+ }
+ };
+
+diff --git a/src/profile.h b/src/profile.h
+index d8188a2..cd29c62 100644
+--- a/src/profile.h
++++ b/src/profile.h
+@@ -49,6 +49,24 @@ public:
+ template<typename PAInfo>
+ void setInfo(const PAInfo *info)
+ {
++ setCommonInfo(info, info->available ? Available : Unavailable);
++ }
++
++ QString name() const;
++ QString description() const;
++ quint32 priority() const;
++ Availability availability() const;
++
++signals:
++ void nameChanged();
++ void descriptionChanged();
++ void priorityChanged();
++ void availabilityChanged();
++
++protected:
++ template<typename PAInfo>
++ void setCommonInfo(const PAInfo *info, Availability newAvailability)
++ {
+ // Description is optional. Name not so much as we need some ID.
+ Q_ASSERT(info->name);
+ QString infoName = QString::fromUtf8(info->name);
+@@ -68,24 +86,12 @@ public:
+ emit priorityChanged();
+ }
+
+- Availability newAvailability = info->available ? Available : Unavailable;
+ if (m_availability != newAvailability) {
+ m_availability = newAvailability;
+ emit availabilityChanged();
+ }
+ }
+
+- QString name() const;
+- QString description() const;
+- quint32 priority() const;
+- Availability availability() const;
+-
+-signals:
+- void nameChanged();
+- void descriptionChanged();
+- void priorityChanged();
+- void availabilityChanged();
+-
+ private:
+ QString m_name;
+ QString m_description;
+--
+cgit v0.11.2
+
diff --git a/kde-plasma/plasma-pa/plasma-pa-5.13.3.ebuild b/kde-plasma/plasma-pa/plasma-pa-5.13.3.ebuild
index aae43ea14cd..5b563ea9d02 100644
--- a/kde-plasma/plasma-pa/plasma-pa-5.13.3.ebuild
+++ b/kde-plasma/plasma-pa/plasma-pa-5.13.3.ebuild
@@ -27,3 +27,5 @@ DEPEND="
"
RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-wrong-port-avail.patch" )
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/
@ 2018-07-27 11:38 Lars Wendler
0 siblings, 0 replies; 7+ messages in thread
From: Lars Wendler @ 2018-07-27 11:38 UTC (permalink / raw
To: gentoo-commits
commit: a6a4c43375a224af0462e0a67b5c2f033f80d260
Author: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 27 11:38:08 2018 +0000
Commit: Lars Wendler <polynomial-c <AT> gentoo <DOT> org>
CommitDate: Fri Jul 27 11:38:08 2018 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a6a4c433
kde-plasma/plasma-pa: Don't depend on gconf anymore.
Done through backported upstream patch.
Bug: https://bugs.gentoo.org/658660
Package-Manager: Portage-2.3.43, Repoman-2.3.10
.../files/plasma-pa-5.13.3-optional_gconf.patch | 280 +++++++++++++++++++++
kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild | 32 +++
2 files changed, 312 insertions(+)
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-optional_gconf.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-optional_gconf.patch
new file mode 100644
index 00000000000..f14fd180c24
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.13.3-optional_gconf.patch
@@ -0,0 +1,280 @@
+From c9fae1fb3f8e8a820fd480ce227d7fabf87bd045 Mon Sep 17 00:00:00 2001
+From: David Rosca <nowrep@gmail.com>
+Date: Tue, 26 Jun 2018 10:56:04 +0200
+Subject: [PATCH] Make GConf optional dependency
+
+When building without GConf, Advanded Output Configuration will be hidden in KCM.
+
+BUG: 386665
+FIXED-IN: 5.13.4
+
+Differential Revision: https://phabricator.kde.org/D13734
+---
+ CMakeLists.txt | 9 ++++--
+ config.h.cmake | 3 ++
+ src/CMakeLists.txt | 18 ++++++++----
+ src/kcm/package/contents/ui/Advanced.qml | 5 +++-
+ src/modulemanager.cpp | 47 ++++++++++++++++++++++++++------
+ src/modulemanager.h | 3 ++
+ 6 files changed, 68 insertions(+), 17 deletions(-)
+ create mode 100644 config.h.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e494ced..2505696 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -19,8 +19,11 @@ include(KDECompilerSettings NO_POLICY_SCOPE)
+ include(ECMOptionalAddSubdirectory)
+
+ include(FindPkgConfig)
+-pkg_check_modules(GCONF REQUIRED gconf-2.0)
+-pkg_check_modules(GOBJECT REQUIRED gobject-2.0)
++pkg_check_modules(GCONF gconf-2.0)
++pkg_check_modules(GOBJECT gobject-2.0)
++if (GCONF_FOUND AND GOBJECT_FOUND)
++ set(HAVE_GCONF TRUE)
++endif()
+
+ find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS
+ Core
+@@ -41,6 +44,8 @@ find_package(PulseAudio 5.0.0 REQUIRED)
+ find_package(Canberra REQUIRED)
+ find_package(GLIB2 REQUIRED)
+
++configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
++
+ add_subdirectory(applet)
+ add_subdirectory(src)
+ add_subdirectory(data)
+diff --git a/config.h.cmake b/config.h.cmake
+new file mode 100644
+index 0000000..1643e50
+--- /dev/null
++++ b/config.h.cmake
+@@ -0,0 +1,3 @@
++/* config.h. Generated by cmake from config.h.cmake */
++
++#cmakedefine01 HAVE_GCONF
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index e6cddfc..09d108c 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,5 +1,4 @@
+-include_directories(${PULSEAUDIO_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ${GCONF_INCLUDE_DIRS}
+- ${GOBJECT_INCLUDE_DIRS})
++include_directories(${PULSEAUDIO_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR})
+
+ set(cpp_SRCS
+ card.cpp
+@@ -15,7 +14,6 @@ set(cpp_SRCS
+ sink.cpp
+ sinkinput.cpp
+ modulemanager.cpp
+- gconfitem.cpp
+ source.cpp
+ sourceoutput.cpp
+ stream.cpp
+@@ -38,6 +36,11 @@ set(qml_SRCS
+ set_property(SOURCE qml/dbus/osdService.xml APPEND PROPERTY CLASSNAME OsdServiceInterface)
+ qt5_add_dbus_interface(dbus_SRCS qml/dbus/osdService.xml osdservice)
+
++if (HAVE_GCONF)
++ include_directories(${GCONF_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS})
++ set(cpp_SRCS ${cpp_SRCS} gconfitem.cpp)
++endif()
++
+ add_library(plasma-volume-declarative SHARED ${dbus_SRCS} ${cpp_SRCS} ${qml_SRCS})
+ target_link_libraries(plasma-volume-declarative
+ Qt5::Core
+@@ -47,11 +50,16 @@ target_link_libraries(plasma-volume-declarative
+ KF5::GlobalAccel
+ ${PULSEAUDIO_LIBRARY}
+ ${PULSEAUDIO_MAINLOOP_LIBRARY}
+- ${GCONF_LDFLAGS}
+- ${GOBJECT_LDFLAGS}
+ ${CANBERRA_LIBRARIES}
+ )
+
++if (HAVE_GCONF)
++ target_link_libraries(plasma-volume-declarative
++ ${GCONF_LDFLAGS}
++ ${GOBJECT_LDFLAGS}
++ )
++endif()
++
+ set(PRIVATE_QML_INSTALL_DIR ${QML_INSTALL_DIR}/org/kde/plasma/private/volume)
+ install(TARGETS plasma-volume-declarative DESTINATION ${PRIVATE_QML_INSTALL_DIR})
+ install(FILES ${qml_SRCS} DESTINATION ${PRIVATE_QML_INSTALL_DIR})
+diff --git a/src/kcm/package/contents/ui/Advanced.qml b/src/kcm/package/contents/ui/Advanced.qml
+index b305cf1..0cd9eb9 100644
+--- a/src/kcm/package/contents/ui/Advanced.qml
++++ b/src/kcm/package/contents/ui/Advanced.qml
+@@ -56,6 +56,7 @@ ScrollView {
+ Header {
+ Layout.fillWidth: true
+ text: i18n("Advanced Output Configuration")
++ visible: moduleManager.settingsSupported
+ }
+
+ ModuleManager {
+@@ -71,6 +72,7 @@ ScrollView {
+ checked: moduleManager.combineSinks
+ onCheckedChanged: moduleManager.combineSinks = checked;
+ enabled: moduleManager.loadedModules.indexOf("module-gconf") != -1
++ visible: moduleManager.settingsSupported
+ }
+
+ CheckBox {
+@@ -81,6 +83,7 @@ ScrollView {
+ checked: moduleManager.switchOnConnect
+ onCheckedChanged: moduleManager.switchOnConnect = checked;
+ enabled: moduleManager.loadedModules.indexOf("module-gconf") != -1
++ visible: moduleManager.settingsSupported
+ }
+
+ Label {
+@@ -88,7 +91,7 @@ ScrollView {
+ enabled: false
+ font.italic: true
+ text: i18n("Requires 'module-gconf' PulseAudio module")
+- visible: moduleManager.loadedModules.indexOf("module-gconf") == -1
++ visible: moduleManager.settingsSupported && moduleManager.loadedModules.indexOf("module-gconf") == -1
+ }
+ }
+ }
+diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp
+index 635adc8..5245ac5 100644
+--- a/src/modulemanager.cpp
++++ b/src/modulemanager.cpp
+@@ -21,20 +21,22 @@
+
+ #include "modulemanager.h"
+ #include "module.h"
++#include "../config.h"
+
++#if HAVE_GCONF
++#include "gconfitem.h"
+ #define PA_GCONF_ROOT "/system/pulseaudio"
+ #define PA_GCONF_PATH_MODULES PA_GCONF_ROOT"/modules"
+-
+-#include "gconfitem.h"
++#endif
+
+ #include <QTimer>
+
+ namespace QPulseAudio
+ {
+
++#if HAVE_GCONF
+ class GConfModule : public GConfItem
+ {
+- Q_OBJECT
+ public:
+ GConfModule(const QString &configName, const QString &moduleName, QObject *parent);
+ bool isEnabled() const;
+@@ -67,17 +69,21 @@ void GConfModule::setEnabled(bool enabled, const QVariant &args)
+ }
+ set(QStringLiteral("locked"), false);
+ }
++#endif
+
+
+ ModuleManager::ModuleManager(QObject *parent) :
+- QObject(parent),
+- m_combineSinks(new GConfModule(QStringLiteral("combine"), QStringLiteral("module-combine"), this)),
+- m_switchOnConnect(new GConfModule(QStringLiteral("switch-on-connect"), QStringLiteral("module-switch-on-connect"), this)),
+- m_deviceManager(new GConfModule(QStringLiteral("device-manager"), QStringLiteral("module-device-manager"), this))
++ QObject(parent)
+ {
++#if HAVE_GCONF
++ m_combineSinks = new GConfModule(QStringLiteral("combine"), QStringLiteral("module-combine"), this);
++ m_switchOnConnect = new GConfModule(QStringLiteral("switch-on-connect"), QStringLiteral("module-switch-on-connect"), this);
++ m_deviceManager = new GConfModule(QStringLiteral("device-manager"), QStringLiteral("module-device-manager"), this);
++
+ connect(m_combineSinks, &GConfItem::subtreeChanged, this, &ModuleManager::combineSinksChanged);
+ connect(m_switchOnConnect, &GConfItem::subtreeChanged, this, &ModuleManager::switchOnConnectChanged);
+ connect(m_deviceManager, &GConfItem::subtreeChanged, this, &ModuleManager::switchOnConnectChanged);
++#endif
+
+ QTimer *updateModulesTimer = new QTimer(this);
+ updateModulesTimer->setInterval(500);
+@@ -92,14 +98,31 @@ ModuleManager::~ModuleManager()
+ {
+ };
+
++bool ModuleManager::settingsSupported() const
++{
++#if HAVE_GCONF
++ return true;
++#else
++ return false;
++#endif
++}
++
+ bool ModuleManager::combineSinks() const
+ {
++#if HAVE_GCONF
+ return m_combineSinks->isEnabled();
++#else
++ return false;
++#endif
+ }
+
+ void ModuleManager::setCombineSinks(bool combineSinks)
+ {
++#if HAVE_GCONF
+ m_combineSinks->setEnabled(combineSinks);
++#else
++ Q_UNUSED(combineSinks)
++#endif
+ }
+
+ bool ModuleManager::switchOnConnect() const
+@@ -109,13 +132,21 @@ bool ModuleManager::switchOnConnect() const
+ //Note on the first run m_deviceManager will appear to be disabled even though it's actually running
+ //because there is no gconf entry, however m_switchOnConnect will only exist if set by Plasma PA
+ //hence only check this entry
++#if HAVE_GCONF
+ return m_switchOnConnect->isEnabled() ;
++#else
++ return false;
++#endif
+ }
+
+ void ModuleManager::setSwitchOnConnect(bool switchOnConnect)
+ {
++#if HAVE_GCONF
+ m_deviceManager->setEnabled(!switchOnConnect);
+ m_switchOnConnect->setEnabled(switchOnConnect);
++#else
++ Q_UNUSED(switchOnConnect)
++#endif
+ }
+
+ QStringList ModuleManager::loadedModules() const
+@@ -134,5 +165,3 @@ void ModuleManager::updateLoadedModules()
+ }
+
+ }
+-
+-#include "modulemanager.moc"
+diff --git a/src/modulemanager.h b/src/modulemanager.h
+index b8fcd0b..8108fe0 100644
+--- a/src/modulemanager.h
++++ b/src/modulemanager.h
+@@ -38,12 +38,15 @@ class GConfModule;
+ class ModuleManager : public QObject
+ {
+ Q_OBJECT
++ Q_PROPERTY(bool settingsSupported READ settingsSupported CONSTANT)
+ Q_PROPERTY(bool combineSinks READ combineSinks WRITE setCombineSinks NOTIFY combineSinksChanged)
+ Q_PROPERTY(bool switchOnConnect READ switchOnConnect WRITE setSwitchOnConnect NOTIFY switchOnConnectChanged)
+ Q_PROPERTY(QStringList loadedModules READ loadedModules NOTIFY loadedModulesChanged)
+ public:
+ ModuleManager(QObject *parent = nullptr);
+ ~ModuleManager();
++
++ bool settingsSupported() const;
+ bool combineSinks() const;
+ void setCombineSinks(bool combineSinks);
+ bool switchOnConnect() const;
diff --git a/kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild b/kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild
new file mode 100644
index 00000000000..12b95df456c
--- /dev/null
+++ b/kde-plasma/plasma-pa/plasma-pa-5.13.3-r1.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_HANDBOOK="forceoptional"
+inherit kde5
+
+DESCRIPTION="Plasma applet for audio volume management using PulseAudio"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE=""
+
+DEPEND="
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kdeclarative)
+ $(add_frameworks_dep kglobalaccel)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep plasma)
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtdeclarative)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtwidgets)
+ media-libs/libcanberra
+ media-sound/pulseaudio
+"
+
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${P}-wrong-port-avail.patch"
+ "${FILESDIR}/${P}-optional_gconf.patch"
+)
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/
@ 2019-04-03 12:02 Andreas Sturmlechner
0 siblings, 0 replies; 7+ messages in thread
From: Andreas Sturmlechner @ 2019-04-03 12:02 UTC (permalink / raw
To: gentoo-commits
commit: 2678504fda2d5f9b8784672157dd9b83bc38a910
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 3 11:45:23 2019 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Apr 3 12:02:32 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2678504f
kde-plasma/plasma-pa: Backport patch to port from GConf to GSettings
Thanks-to: Lars Wendler <polynomial-c <AT> gentoo.org>
Bug: https://bugs.gentoo.org/658660
Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
.../files/plasma-pa-5.15.4-gsettings.patch | 622 +++++++++++++++++++++
kde-plasma/plasma-pa/plasma-pa-5.15.4-r1.ebuild | 35 ++
2 files changed, 657 insertions(+)
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.15.4-gsettings.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.15.4-gsettings.patch
new file mode 100644
index 00000000000..5ecb0ea216b
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.15.4-gsettings.patch
@@ -0,0 +1,622 @@
+From c6f41bea3371e6e1948a99ac64d5882d76d9c66e Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@gmx.de>
+Date: Sun, 31 Mar 2019 16:19:55 +0200
+Subject: [PATCH] Port from GConf to GSettings
+
+Summary:
+CCBUG: 386665
+
+As discussed in bug 386665 GConf is deprecated and needs to be replaced by GSettings to keep features enabled.
+
+Question: Do we need GConf as a fallback for PA versions without module-gsettings?
+
+Test Plan:
+Checkboxes in Advanced tab are enabled again.
+Changed settings are shown in dconf-editor and vice versa.
+Combine output checkbox shows/hides combined sink in applet
+
+Reviewers: drosca, davidedmundson
+
+Reviewed By: drosca
+
+Subscribers: pino, lbeltrame, evpokp, rikmills, broulik, asturmlechner, plasma-devel
+
+Tags: #plasma
+
+Differential Revision: https://phabricator.kde.org/D14147
+---
+ CMakeLists.txt | 15 ++--
+ cmake/FindGIO.cmake | 72 +++++++++++++++++++
+ config.h.cmake | 3 +-
+ src/CMakeLists.txt | 18 ++++-
+ src/gsettingsitem.cpp | 91 ++++++++++++++++++++++++
+ src/gsettingsitem.h | 59 +++++++++++++++
+ src/kcm/package/contents/ui/Advanced.qml | 8 +--
+ src/modulemanager.cpp | 79 +++++++++++++-------
+ src/modulemanager.h | 14 ++--
+ 9 files changed, 315 insertions(+), 44 deletions(-)
+ create mode 100644 cmake/FindGIO.cmake
+ create mode 100644 src/gsettingsitem.cpp
+ create mode 100644 src/gsettingsitem.h
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9973ef7..d33dc1d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -20,11 +20,6 @@ include(KDECompilerSettings NO_POLICY_SCOPE)
+ include(ECMOptionalAddSubdirectory)
+
+ include(FindPkgConfig)
+-pkg_check_modules(GCONF gconf-2.0)
+-pkg_check_modules(GOBJECT gobject-2.0)
+-if (GCONF_FOUND AND GOBJECT_FOUND)
+- set(HAVE_GCONF TRUE)
+-endif()
+
+ find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS
+ Core
+@@ -45,6 +40,16 @@ find_package(PulseAudio 5.0.0 REQUIRED)
+ find_package(Canberra REQUIRED)
+ find_package(GLIB2 REQUIRED)
+
++option(USE_GCONF "Use legacy GConf instead of GSettings")
++
++pkg_check_modules(GOBJECT gobject-2.0 REQUIRED)
++if(USE_GCONF)
++ pkg_check_modules(GCONF gconf-2.0 REQUIRED)
++else()
++ find_package(GIO REQUIRED)
++ set(USE_GSETTINGS True)
++endif()
++
+ find_package(CanberraPulse)
+ set_package_properties(CanberraPulse PROPERTIES
+ DESCRIPTION "Pulseaudio backend for libcanberra"
+diff --git a/cmake/FindGIO.cmake b/cmake/FindGIO.cmake
+new file mode 100644
+index 0000000..827c243
+--- /dev/null
++++ b/cmake/FindGIO.cmake
+@@ -0,0 +1,72 @@
++# - Try to find the GIO libraries
++# Once done this will define
++#
++# GIO_FOUND - system has GIO
++# GIO_INCLUDE_DIR - the GIO include directory
++# GIO_LIBRARIES - GIO library
++#
++# Copyright (c) 2010 Dario Freddi <drf@kde.org>
++#
++# Redistribution and use is allowed according to the terms of the BSD license.
++# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
++
++if(GIO_INCLUDE_DIR AND GIO_LIBRARIES)
++ # Already in cache, be silent
++ set(GIO_FIND_QUIETLY TRUE)
++endif(GIO_INCLUDE_DIR AND GIO_LIBRARIES)
++
++if (NOT WIN32)
++ include(UsePkgConfig)
++ pkgconfig(gio-2.0 _LibGIOIncDir _LibGIOLinkDir _LibGIOLinkFlags _LibGIOCflags)
++endif(NOT WIN32)
++
++MESSAGE(STATUS "gio include dir: ${_LibGIOIncDir}")
++
++# first try without default paths to respect PKG_CONFIG_PATH
++
++find_path(GIO_MAIN_INCLUDE_DIR glib.h
++ PATH_SUFFIXES glib-2.0
++ PATHS ${_LibGIOIncDir}
++ NO_DEFAULT_PATH)
++
++find_path(GIO_MAIN_INCLUDE_DIR glib.h
++ PATH_SUFFIXES glib-2.0
++ PATHS ${_LibGIOIncDir} )
++
++MESSAGE(STATUS "found gio main include dir: ${GIO_MAIN_INCLUDE_DIR}")
++
++# search the glibconfig.h include dir under the same root where the library is found
++find_library(GIO_LIBRARIES
++ NAMES gio-2.0
++ PATHS ${_LibGIOLinkDir}
++ NO_DEFAULT_PATH)
++
++find_library(GIO_LIBRARIES
++ NAMES gio-2.0
++ PATHS ${_LibGIOLinkDir})
++
++
++get_filename_component(GIOLibDir "${GIO_LIBRARIES}" PATH)
++
++find_path(GIO_INTERNAL_INCLUDE_DIR glibconfig.h
++ PATH_SUFFIXES glib-2.0/include
++ PATHS ${_LibGIOIncDir} "${GIOLibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH}
++ NO_DEFAULT_PATH)
++
++find_path(GIO_INTERNAL_INCLUDE_DIR glibconfig.h
++ PATH_SUFFIXES glib-2.0/include
++ PATHS ${_LibGIOIncDir} "${GIOLibDir}" ${CMAKE_SYSTEM_LIBRARY_PATH})
++
++set(GIO_INCLUDE_DIR "${GIO_MAIN_INCLUDE_DIR}")
++
++# not sure if this include dir is optional or required
++# for now it is optional
++if(GIO_INTERNAL_INCLUDE_DIR)
++ set(GIO_INCLUDE_DIR ${GIO_INCLUDE_DIR} "${GIO_INTERNAL_INCLUDE_DIR}")
++endif(GIO_INTERNAL_INCLUDE_DIR)
++
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(GIO DEFAULT_MSG GIO_LIBRARIES GIO_MAIN_INCLUDE_DIR)
++
++mark_as_advanced(GIO_INCLUDE_DIR GIO_LIBRARIES)
++
+diff --git a/config.h.cmake b/config.h.cmake
+index 1643e50..7d801c3 100644
+--- a/config.h.cmake
++++ b/config.h.cmake
+@@ -1,3 +1,4 @@
+ /* config.h. Generated by cmake from config.h.cmake */
+
+-#cmakedefine01 HAVE_GCONF
++#cmakedefine01 USE_GSETTINGS
++#cmakedefine01 USE_GCONF
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 8684251..d4a6c4b 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -37,11 +37,16 @@ set(qml_SRCS
+ set_property(SOURCE qml/dbus/osdService.xml APPEND PROPERTY CLASSNAME OsdServiceInterface)
+ qt5_add_dbus_interface(dbus_SRCS qml/dbus/osdService.xml osdservice)
+
+-if (HAVE_GCONF)
++if (USE_GCONF)
+ include_directories(${GCONF_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS})
+ set(cpp_SRCS ${cpp_SRCS} gconfitem.cpp)
+ endif()
+
++if (USE_GSETTINGS)
++ include_directories(${GIO_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS})
++ set(cpp_SRCS ${cpp_SRCS} gsettingsitem.cpp)
++endif()
++
+ add_library(plasma-volume-declarative SHARED ${dbus_SRCS} ${cpp_SRCS} ${qml_SRCS})
+ target_link_libraries(plasma-volume-declarative
+ Qt5::Core
+@@ -52,12 +57,19 @@ target_link_libraries(plasma-volume-declarative
+ ${PULSEAUDIO_LIBRARY}
+ ${PULSEAUDIO_MAINLOOP_LIBRARY}
+ ${CANBERRA_LIBRARIES}
++ ${GOBJECT_LIBRARIES}
+ )
+
+-if (HAVE_GCONF)
++if (USE_GCONF)
+ target_link_libraries(plasma-volume-declarative
+ ${GCONF_LDFLAGS}
+- ${GOBJECT_LDFLAGS}
++ )
++endif()
++
++if (USE_GSETTINGS)
++ target_link_libraries(plasma-volume-declarative
++ ${GIO_LIBRARIES}
++ GLIB2::GLIB2
+ )
+ endif()
+
+diff --git a/src/gsettingsitem.cpp b/src/gsettingsitem.cpp
+new file mode 100644
+index 0000000..b3a9353
+--- /dev/null
++++ b/src/gsettingsitem.cpp
+@@ -0,0 +1,91 @@
++/*
++ * Copyright (C) 2018 Nicolas Fella <nicolas.fella@gmx.de>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public License
++ * version 2.1 as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ *
++ */
++
++#include <QString>
++#include <QVariant>
++
++#include <gio/gio.h>
++
++#include "gsettingsitem.h"
++#include "debug.h"
++
++QVariant GSettingsItem::value(const QString &key) const
++{
++ GVariant *gvalue = g_settings_get_value(m_settings, key.toLatin1().data());
++
++ QVariant toReturn;
++
++ switch (g_variant_classify(gvalue)) {
++ case G_VARIANT_CLASS_BOOLEAN:
++ toReturn = QVariant((bool)g_variant_get_boolean(gvalue));
++ break;
++ case G_VARIANT_CLASS_STRING:
++ toReturn = QVariant(QString::fromUtf8(g_variant_get_string(gvalue, nullptr)));
++ break;
++ default:
++ qCWarning(PLASMAPA()) << "Unhandled variant type in value()";
++ }
++
++ g_variant_unref(gvalue);
++
++ return toReturn;
++}
++
++void GSettingsItem::set(const QString &key, const QVariant &val)
++{
++ // It might be hard to detect the right GVariant type from
++ // complext QVariant types such as string lists or more detailed
++ // types such as integers (GVariant has different sizes),
++ // therefore we get the current value for the key and convert
++ // to QVariant using the GVariant type
++ GVariant *oldValue = g_settings_get_value(m_settings, key.toLatin1().data());
++ GVariant *newValue = nullptr;
++
++ switch (g_variant_type_peek_string(g_variant_get_type(oldValue))[0]) {
++ case G_VARIANT_CLASS_BOOLEAN:
++ newValue = g_variant_new_boolean(val.toBool());
++ break;
++ case G_VARIANT_CLASS_STRING:
++ newValue = g_variant_new_string(val.toString().toUtf8().constData());
++ break;
++ default:
++ qCWarning(PLASMAPA()) << "Unhandled variant type in set()";
++ }
++
++ if (newValue) {
++ g_settings_set_value(m_settings, key.toLatin1().data(), newValue);
++ }
++
++ g_variant_unref(oldValue);
++}
++
++GSettingsItem::GSettingsItem(const QString &key, QObject *parent)
++ : QObject (parent)
++{
++ m_settings = g_settings_new_with_path("org.freedesktop.pulseaudio.module-group", key.toLatin1().data());
++
++ g_signal_connect(m_settings, "changed", G_CALLBACK(GSettingsItem::settingChanged), this);
++}
++
++GSettingsItem::~GSettingsItem()
++{
++ g_settings_sync();
++ if (m_settings)
++ g_object_unref(m_settings);
++}
+diff --git a/src/gsettingsitem.h b/src/gsettingsitem.h
+new file mode 100644
+index 0000000..9afcfc2
+--- /dev/null
++++ b/src/gsettingsitem.h
+@@ -0,0 +1,59 @@
++/*
++ * Copyright (C) 2018 Nicolas Fella <nicolas.fella@gmx.de>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public License
++ * version 2.1 as published by the Free Software Foundation.
++ *
++ * This library is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU Lesser General Public
++ * License along with this library; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ *
++ */
++
++#ifndef GSETTINGSITEM_H
++#define GSETTINGSITEM_H
++
++#include <QVariant>
++#include <QStringList>
++#include <QObject>
++
++#include <gio/gio.h>
++
++class GSettingsItem : public QObject
++{
++ Q_OBJECT
++
++ public:
++
++ explicit GSettingsItem(const QString &key, QObject *parent = nullptr);
++ virtual ~GSettingsItem() override;
++
++ QVariant value(const QString &key) const;
++ void set(const QString &key, const QVariant &val);
++
++
++Q_SIGNALS:
++ void subtreeChanged();
++
++private:
++ GSettings *m_settings;
++
++static void settingChanged(GSettings *settings, const gchar *key, gpointer data)
++{
++ Q_UNUSED(settings)
++ Q_UNUSED(key)
++
++ GSettingsItem *self = static_cast<GSettingsItem *>(data);
++ Q_EMIT self->subtreeChanged();
++}
++
++};
++
++#endif // GCONFITEM_H
+diff --git a/src/kcm/package/contents/ui/Advanced.qml b/src/kcm/package/contents/ui/Advanced.qml
+index 536ae3e..48512e7 100644
+--- a/src/kcm/package/contents/ui/Advanced.qml
++++ b/src/kcm/package/contents/ui/Advanced.qml
+@@ -73,7 +73,7 @@ ScrollView {
+ text: i18nd("kcm_pulseaudio", "Add virtual output device for simultaneous output on all local sound cards")
+ checked: moduleManager.combineSinks
+ onCheckedChanged: moduleManager.combineSinks = checked;
+- enabled: moduleManager.loadedModules.indexOf("module-gconf") != -1
++ enabled: moduleManager.configModuleLoaded
+ visible: moduleManager.settingsSupported
+ }
+
+@@ -84,7 +84,7 @@ ScrollView {
+ text: i18nd("kcm_pulseaudio", "Automatically switch all running streams when a new output becomes available")
+ checked: moduleManager.switchOnConnect
+ onCheckedChanged: moduleManager.switchOnConnect = checked;
+- enabled: moduleManager.loadedModules.indexOf("module-gconf") != -1
++ enabled: moduleManager.configModuleLoaded
+ visible: moduleManager.settingsSupported
+ }
+
+@@ -92,8 +92,8 @@ ScrollView {
+ Layout.alignment: Qt.AlignHCenter
+ enabled: false
+ font.italic: true
+- text: i18nd("kcm_pulseaudio", "Requires 'module-gconf' PulseAudio module")
+- visible: moduleManager.settingsSupported && moduleManager.loadedModules.indexOf("module-gconf") == -1
++ text: i18nd("kcm_pulseaudio", "Requires %1 PulseAudio module", moduleManager.configModuleName)
++ visible: moduleManager.settingsSupported && !moduleManager.configModuleLoaded
+ }
+
+ Header {
+diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp
+index 5245ac5..a43182e 100644
+--- a/src/modulemanager.cpp
++++ b/src/modulemanager.cpp
+@@ -23,10 +23,15 @@
+ #include "module.h"
+ #include "../config.h"
+
+-#if HAVE_GCONF
++#if USE_GSETTINGS
++#include "gsettingsitem.h"
++
++#define PA_SETTINGS_PATH_MODULES "/org/freedesktop/pulseaudio/module-groups"
++#endif
++
++#if USE_GCONF
+ #include "gconfitem.h"
+-#define PA_GCONF_ROOT "/system/pulseaudio"
+-#define PA_GCONF_PATH_MODULES PA_GCONF_ROOT"/modules"
++#define PA_SETTINGS_PATH_MODULES "/system/pulseaudio/modules"
+ #endif
+
+ #include <QTimer>
+@@ -34,29 +39,38 @@
+ namespace QPulseAudio
+ {
+
+-#if HAVE_GCONF
+-class GConfModule : public GConfItem
++#if USE_GCONF || USE_GSETTINGS
++
++#if USE_GSETTINGS
++class ConfigModule : public GSettingsItem
++#elif USE_GCONF
++class ConfigModule : public GConfItem
++#endif
+ {
+ public:
+- GConfModule(const QString &configName, const QString &moduleName, QObject *parent);
++ ConfigModule(const QString &configName, const QString &moduleName, QObject *parent);
+ bool isEnabled() const;
+ void setEnabled(bool enabled, const QVariant &args=QVariant());
+ private:
+ QString m_moduleName;
+ };
+
+-GConfModule::GConfModule(const QString &configName, const QString &moduleName, QObject *parent) :
+- GConfItem(QStringLiteral(PA_GCONF_PATH_MODULES"/") + configName, parent),
++ConfigModule::ConfigModule(const QString &configName, const QString &moduleName, QObject *parent) :
++#if USE_GSETTINGS
++ GSettingsItem(QStringLiteral(PA_SETTINGS_PATH_MODULES"/") + configName + QStringLiteral("/"), parent),
++#elif USE_GCONF
++ GConfItem(QStringLiteral(PA_SETTINGS_PATH_MODULES"/") + configName, parent),
++#endif
+ m_moduleName(moduleName)
+ {
+ }
+
+-bool GConfModule::isEnabled() const
++bool ConfigModule::isEnabled() const
+ {
+ return value(QStringLiteral("enabled")).toBool();
+ }
+
+-void GConfModule::setEnabled(bool enabled, const QVariant &args)
++void ConfigModule::setEnabled(bool enabled, const QVariant &args)
+ {
+ set(QStringLiteral("locked"), true);
+
+@@ -69,20 +83,20 @@ void GConfModule::setEnabled(bool enabled, const QVariant &args)
+ }
+ set(QStringLiteral("locked"), false);
+ }
+-#endif
+
++#endif
+
+ ModuleManager::ModuleManager(QObject *parent) :
+ QObject(parent)
+ {
+-#if HAVE_GCONF
+- m_combineSinks = new GConfModule(QStringLiteral("combine"), QStringLiteral("module-combine"), this);
+- m_switchOnConnect = new GConfModule(QStringLiteral("switch-on-connect"), QStringLiteral("module-switch-on-connect"), this);
+- m_deviceManager = new GConfModule(QStringLiteral("device-manager"), QStringLiteral("module-device-manager"), this);
+-
+- connect(m_combineSinks, &GConfItem::subtreeChanged, this, &ModuleManager::combineSinksChanged);
+- connect(m_switchOnConnect, &GConfItem::subtreeChanged, this, &ModuleManager::switchOnConnectChanged);
+- connect(m_deviceManager, &GConfItem::subtreeChanged, this, &ModuleManager::switchOnConnectChanged);
++#if USE_GCONF || USE_GSETTINGS
++ m_combineSinks = new ConfigModule(QStringLiteral("combine"), QStringLiteral("module-combine"), this);
++ m_switchOnConnect = new ConfigModule(QStringLiteral("switch-on-connect"), QStringLiteral("module-switch-on-connect"), this);
++ m_deviceManager = new ConfigModule(QStringLiteral("device-manager"), QStringLiteral("module-device-manager"), this);
++
++ connect(m_combineSinks, &ConfigModule::subtreeChanged, this, &ModuleManager::combineSinksChanged);
++ connect(m_switchOnConnect, &ConfigModule::subtreeChanged, this, &ModuleManager::switchOnConnectChanged);
++ connect(m_deviceManager, &ConfigModule::subtreeChanged, this, &ModuleManager::switchOnConnectChanged);
+ #endif
+
+ QTimer *updateModulesTimer = new QTimer(this);
+@@ -100,7 +114,7 @@ ModuleManager::~ModuleManager()
+
+ bool ModuleManager::settingsSupported() const
+ {
+-#if HAVE_GCONF
++#if USE_GCONF || USE_GSETTINGS
+ return true;
+ #else
+ return false;
+@@ -109,7 +123,7 @@ bool ModuleManager::settingsSupported() const
+
+ bool ModuleManager::combineSinks() const
+ {
+-#if HAVE_GCONF
++#if USE_GCONF || USE_GSETTINGS
+ return m_combineSinks->isEnabled();
+ #else
+ return false;
+@@ -118,21 +132,21 @@ bool ModuleManager::combineSinks() const
+
+ void ModuleManager::setCombineSinks(bool combineSinks)
+ {
+-#if HAVE_GCONF
++#if USE_GCONF || USE_GSETTINGS
+ m_combineSinks->setEnabled(combineSinks);
+ #else
+- Q_UNUSED(combineSinks)
++ Q_UNUSED(combineSinks()
+ #endif
+ }
+
+ bool ModuleManager::switchOnConnect() const
+ {
++#if USE_GCONF || USE_GSETTINGS
+ //switch on connect and device-manager do the same task. Only one should be enabled
+
+ //Note on the first run m_deviceManager will appear to be disabled even though it's actually running
+ //because there is no gconf entry, however m_switchOnConnect will only exist if set by Plasma PA
+ //hence only check this entry
+-#if HAVE_GCONF
+ return m_switchOnConnect->isEnabled() ;
+ #else
+ return false;
+@@ -141,7 +155,7 @@ bool ModuleManager::switchOnConnect() const
+
+ void ModuleManager::setSwitchOnConnect(bool switchOnConnect)
+ {
+-#if HAVE_GCONF
++#if USE_GCONF || USE_GSETTINGS
+ m_deviceManager->setEnabled(!switchOnConnect);
+ m_switchOnConnect->setEnabled(switchOnConnect);
+ #else
+@@ -164,4 +178,19 @@ void ModuleManager::updateLoadedModules()
+ Q_EMIT loadedModulesChanged();
+ }
+
++bool ModuleManager::configModuleLoaded() const
++{
++ return m_loadedModules.contains(configModuleName());
++}
++
++QString ModuleManager::configModuleName() const
++{
++#if USE_GCONF
++ return QStringLiteral("module-gconf");
++#elif USE_GSETTINGS
++ return QStringLiteral("module-gsettings");
++#else
++ return QString();
++#endif
++}
+ }
+diff --git a/src/modulemanager.h b/src/modulemanager.h
+index 17efd6d..291936e 100644
+--- a/src/modulemanager.h
++++ b/src/modulemanager.h
+@@ -29,11 +29,9 @@
+ // Properties need fully qualified classes even with pointers.
+ #include "client.h"
+
+-class GConfItem;
+-
+ namespace QPulseAudio
+ {
+-class GConfModule;
++class ConfigModule;
+
+ class ModuleManager : public QObject
+ {
+@@ -41,6 +39,8 @@ class ModuleManager : public QObject
+ Q_PROPERTY(bool settingsSupported READ settingsSupported CONSTANT)
+ Q_PROPERTY(bool combineSinks READ combineSinks WRITE setCombineSinks NOTIFY combineSinksChanged)
+ Q_PROPERTY(bool switchOnConnect READ switchOnConnect WRITE setSwitchOnConnect NOTIFY switchOnConnectChanged)
++ Q_PROPERTY(bool configModuleLoaded READ configModuleLoaded NOTIFY loadedModulesChanged)
++ Q_PROPERTY(QString configModuleName READ configModuleName CONSTANT)
+ Q_PROPERTY(QStringList loadedModules READ loadedModules NOTIFY loadedModulesChanged)
+ public:
+ explicit ModuleManager(QObject *parent = nullptr);
+@@ -52,6 +52,8 @@ public:
+ bool switchOnConnect() const;
+ void setSwitchOnConnect(bool switchOnConnect);
+ QStringList loadedModules() const;
++ bool configModuleLoaded() const;
++ QString configModuleName() const;
+
+ Q_SIGNALS:
+ void combineSinksChanged();
+@@ -61,9 +63,9 @@ Q_SIGNALS:
+ private:
+ void updateLoadedModules();
+
+- GConfModule *m_combineSinks;
+- GConfModule *m_switchOnConnect;
+- GConfModule *m_deviceManager;
++ ConfigModule *m_combineSinks;
++ ConfigModule *m_switchOnConnect;
++ ConfigModule *m_deviceManager;
+ QStringList m_loadedModules;
+ };
+
+--
+2.21.0
diff --git a/kde-plasma/plasma-pa/plasma-pa-5.15.4-r1.ebuild b/kde-plasma/plasma-pa/plasma-pa-5.15.4-r1.ebuild
new file mode 100644
index 00000000000..3596f6d6bd7
--- /dev/null
+++ b/kde-plasma/plasma-pa/plasma-pa-5.15.4-r1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CMAKE_REMOVE_MODULES_LIST=( FindGLIB2 )
+KDE_HANDBOOK="forceoptional"
+inherit kde5
+
+DESCRIPTION="Plasma applet for audio volume management using PulseAudio"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE=""
+
+DEPEND="
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kdeclarative)
+ $(add_frameworks_dep kglobalaccel)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep plasma)
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtdeclarative)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtwidgets)
+ dev-libs/glib:2
+ media-libs/libcanberra
+ media-sound/pulseaudio
+"
+RDEPEND="${DEPEND}
+ $(add_frameworks_dep kirigami)
+ $(add_qt_dep qtquickcontrols)
+ media-libs/libcanberra
+ x11-themes/sound-theme-freedesktop
+"
+
+PATCHES=( "${FILESDIR}/${PN}-5.15.4-gsettings.patch" )
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/
@ 2023-03-22 23:01 Andreas Sturmlechner
0 siblings, 0 replies; 7+ messages in thread
From: Andreas Sturmlechner @ 2023-03-22 23:01 UTC (permalink / raw
To: gentoo-commits
commit: 5d9525a3b3b9fbca4d66d6e144cb8e809e0c224b
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 22 22:27:06 2023 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Mar 22 23:01:03 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5d9525a3
kde-plasma/plasma-pa: Backport 5.27.4 fixes
Upstream commits:
1e4d0d567a72d444dff1f90bb9c1712212d6e07e
82a276183fac1ca79d7fe2a14d3f19e9a96ba830
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=465996
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...plasma-pa-5.27.3-fix-show-virtual-devices.patch | 31 ++++++++++
...a-pa-5.27.3-improve-DeviceListItem-sizing.patch | 67 ++++++++++++++++++++++
kde-plasma/plasma-pa/plasma-pa-5.27.3-r1.ebuild | 41 +++++++++++++
3 files changed, 139 insertions(+)
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.27.3-fix-show-virtual-devices.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.27.3-fix-show-virtual-devices.patch
new file mode 100644
index 000000000000..042323757028
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.27.3-fix-show-virtual-devices.patch
@@ -0,0 +1,31 @@
+From 1e4d0d567a72d444dff1f90bb9c1712212d6e07e Mon Sep 17 00:00:00 2001
+From: Fushan Wen <qydwhotmail@gmail.com>
+Date: Sat, 18 Mar 2023 16:31:57 +0800
+Subject: [PATCH] applet: add missing function for "Show virtual devices" menu
+ item
+
+BUG: 465996
+FIXED-IN: 5.27.4
+(cherry picked from commit 5430caf2483203de5f3047408582bec953aa8946)
+---
+ applet/contents/ui/main.qml | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/applet/contents/ui/main.qml b/applet/contents/ui/main.qml
+index aa595204..f65ec85d 100644
+--- a/applet/contents/ui/main.qml
++++ b/applet/contents/ui/main.qml
+@@ -754,6 +754,10 @@ Item {
+ KQCAddons.KCMShell.openSystemSettings("kcm_pulseaudio");
+ }
+
++ function action_showVirtualDevices() {
++ Plasmoid.configuration.showVirtualDevices = !Plasmoid.configuration.showVirtualDevices;
++ }
++
+ Component.onCompleted: {
+ MicrophoneIndicator.init();
+
+--
+GitLab
+
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.27.3-improve-DeviceListItem-sizing.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.27.3-improve-DeviceListItem-sizing.patch
new file mode 100644
index 000000000000..b37d08a745fd
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.27.3-improve-DeviceListItem-sizing.patch
@@ -0,0 +1,67 @@
+From b6715dc950ab5019542f2f7a77e9f2aa4afab9dc Mon Sep 17 00:00:00 2001
+From: Oliver Beard <olib141@outlook.com>
+Date: Tue, 21 Mar 2023 20:19:38 +0000
+Subject: [PATCH] kcm/DeviceListItem: Set width for comboboxes, with correctly
+ sized popup
+
+This commit sets a preferred width for the port/profile comboboxes, so that they appear consistent. The full names are visible by opening the combobox, as the popup is now sized to show the full name. It is also ensured that the popup is positioned correctly to not go off the page when wide.
+
+
+(cherry picked from commit 82a276183fac1ca79d7fe2a14d3f19e9a96ba830)
+---
+ src/kcm/package/contents/ui/DeviceListItem.qml | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/src/kcm/package/contents/ui/DeviceListItem.qml b/src/kcm/package/contents/ui/DeviceListItem.qml
+index 714884c2..09feea71 100644
+--- a/src/kcm/package/contents/ui/DeviceListItem.qml
++++ b/src/kcm/package/contents/ui/DeviceListItem.qml
+@@ -94,7 +94,7 @@ ColumnLayout {
+
+ readonly property var ports: Ports
+
+- Layout.minimumWidth: Kirigami.Units.gridUnit * 10
++ Layout.preferredWidth: Kirigami.Units.gridUnit * 10
+ visible: portBox.count > 1
+
+ onModelChanged: currentIndex = ActivePortIndex
+@@ -119,6 +119,13 @@ ColumnLayout {
+ }
+ model = items;
+ }
++
++ // Ensure the popup is sufficiently wide to list *full* device names
++ // and is correctly positioned to not go off the page
++ popup.width: Math.max(implicitWidth, width)
++ popup.leftMargin: delegate.ListView.view.Layout.leftMargin
++ popup.rightMargin: delegate.ListView.view.Layout.rightMargin
++ popup.x: mirrored ? 0 : width - popup.width
+ }
+
+ Label {
+@@ -133,7 +140,7 @@ ColumnLayout {
+
+ readonly property var card: paCardModel.data(paCardModel.indexOfCardNumber(CardIndex), paCardModel.role("PulseObject"))
+
+- Layout.minimumWidth: Kirigami.Units.gridUnit * 12
++ Layout.preferredWidth: Kirigami.Units.gridUnit * 12
+ visible: profileBox.count > 1
+ textRole: "description"
+
+@@ -141,6 +148,13 @@ ColumnLayout {
+ currentIndex: card ? model.indexOf(card.profiles[card.activeProfileIndex]) : -1
+
+ onActivated: index => card.activeProfileIndex = card.profiles.indexOf(model[index])
++
++ // Ensure the popup is sufficiently wide to list *full* device names
++ // and is correctly positioned to not go off the page
++ popup.width: Math.max(implicitWidth, width)
++ popup.leftMargin: delegate.ListView.view.Layout.leftMargin
++ popup.rightMargin: delegate.ListView.view.Layout.rightMargin
++ popup.x: mirrored ? 0 : width - popup.width
+ }
+ }
+
+--
+GitLab
+
diff --git a/kde-plasma/plasma-pa/plasma-pa-5.27.3-r1.ebuild b/kde-plasma/plasma-pa/plasma-pa-5.27.3-r1.ebuild
new file mode 100644
index 000000000000..c758fefd0a93
--- /dev/null
+++ b/kde-plasma/plasma-pa/plasma-pa-5.27.3-r1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="forceoptional"
+KFMIN=5.102.0
+QTMIN=5.15.7
+inherit ecm plasma.kde.org
+
+DESCRIPTION="Plasma applet for audio volume management using PulseAudio"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE=""
+
+DEPEND="
+ dev-libs/glib:2
+ >=dev-qt/qtdbus-${QTMIN}:5
+ >=dev-qt/qtdeclarative-${QTMIN}:5
+ >=dev-qt/qtgui-${QTMIN}:5
+ >=kde-frameworks/kcoreaddons-${KFMIN}:5
+ >=kde-frameworks/kdeclarative-${KFMIN}:5
+ >=kde-frameworks/kglobalaccel-${KFMIN}:5
+ >=kde-frameworks/ki18n-${KFMIN}:5
+ >=kde-frameworks/plasma-${KFMIN}:5
+ media-libs/libcanberra
+ media-libs/libpulse
+"
+RDEPEND="${DEPEND}
+ >=dev-qt/qtquickcontrols2-${QTMIN}:5
+ >=kde-frameworks/kirigami-${KFMIN}:5
+ x11-themes/sound-theme-freedesktop
+"
+BDEPEND=">=kde-frameworks/kcmutils-${KFMIN}:5"
+
+PATCHES=(
+ "${FILESDIR}/${P}-fix-show-virtual-devices.patch" # KDE-bug 465996
+ "${FILESDIR}/${P}-improve-DeviceListItem-sizing.patch"
+)
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/
@ 2023-06-27 11:25 Andreas Sturmlechner
0 siblings, 0 replies; 7+ messages in thread
From: Andreas Sturmlechner @ 2023-06-27 11:25 UTC (permalink / raw
To: gentoo-commits
commit: c0a7d151fc1ca3995f030daef0cb600549ac84b4
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 27 07:37:17 2023 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Jun 27 11:25:39 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c0a7d151
kde-plasma/plasma-pa: Backport various 5.27.7 fixes
KDE-bug: https://bugs.kde.org/show_bug.cgi?id=435840
See also: https://invent.kde.org/plasma/plasma-pa/-/merge_requests/191
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...5.27.6-make-setGenericVolume-keep-balance.patch | 42 ++++++++++
...-5.27.6-move-volume-logic-to-VolumeSlider.patch | 93 ++++++++++++++++++++++
kde-plasma/plasma-pa/plasma-pa-5.27.6-r1.ebuild | 41 ++++++++++
3 files changed, 176 insertions(+)
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-make-setGenericVolume-keep-balance.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-make-setGenericVolume-keep-balance.patch
new file mode 100644
index 000000000000..2067a4fd9742
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-make-setGenericVolume-keep-balance.patch
@@ -0,0 +1,42 @@
+From ffe6a4f4b6f56296165cea8651f35563d168ac89 Mon Sep 17 00:00:00 2001
+From: Quinten Kock <quintenkock@gmail.com>
+Date: Wed, 21 Jun 2023 20:51:11 +0200
+Subject: [PATCH] Make setGenericVolume keep balance between channels
+
+Previously setGenericVolume would apply the same amount of difference
+on all channels, making e.g. 100%/50% -> 80%/30%.
+
+This commit changes it to keep the ratios equal instead, so that the
+resulting volume would be 80%/40%, keeping the balance the same.
+
+BUG: 435840
+FIXED-IN: 5.27.7
+
+
+(cherry picked from commit cfe4a360f2640d7bd4e2d936804b100a299b268a)
+---
+ src/context.h | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/context.h b/src/context.h
+index 3d1f7525..969fa13b 100644
+--- a/src/context.h
++++ b/src/context.h
+@@ -123,9 +123,12 @@ public:
+ newVolume = qBound<qint64>(0, newVolume, PA_VOLUME_MAX);
+ pa_cvolume newCVolume = cVolume;
+ if (channel == -1) { // -1 all channels
+- const qint64 diff = newVolume - pa_cvolume_max(&cVolume);
++ const qint64 orig = pa_cvolume_max(&cVolume);
++ const qint64 diff = newVolume - orig;
+ for (int i = 0; i < newCVolume.channels; ++i) {
+- newCVolume.values[i] = qBound<qint64>(0, newCVolume.values[i] + diff, PA_VOLUME_MAX);
++ const qint64 channel = newCVolume.values[i];
++ const qint64 channelDiff = orig == 0 ? diff : diff * channel / orig;
++ newCVolume.values[i] = qBound<qint64>(0, newCVolume.values[i] + channelDiff, PA_VOLUME_MAX);
+ }
+ } else {
+ Q_ASSERT(newCVolume.channels > channel);
+--
+GitLab
+
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch b/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch
new file mode 100644
index 000000000000..2a01651f8814
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-5.27.6-move-volume-logic-to-VolumeSlider.patch
@@ -0,0 +1,93 @@
+From 91dcf51a0cda029519c917c93f330a6ced531784 Mon Sep 17 00:00:00 2001
+From: Quinten Kock <quintenkock@gmail.com>
+Date: Wed, 21 Jun 2023 21:03:15 +0200
+Subject: [PATCH] Put volume change logic centrally in VolumeSlider
+
+This commit puts the volume change logic in one place, to prevent
+issues related to changing the volume twice.
+
+Without this commit there are issues such as dragging from 100%/100% to
+100%/50% and then the mixer changing the volume to 50%/25%.
+
+I'm not sure I'm entirely happy with this, but it seems to work.
+
+
+(cherry picked from commit fec28d12c086a13038f6c40f10d3c25bb7517660)
+---
+ src/kcm/package/contents/ui/DeviceListItem.qml | 18 ++----------------
+ src/kcm/package/contents/ui/VolumeSlider.qml | 16 +++++++++++++++-
+ 2 files changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/src/kcm/package/contents/ui/DeviceListItem.qml b/src/kcm/package/contents/ui/DeviceListItem.qml
+index 09feea71..ab0ce6f0 100644
+--- a/src/kcm/package/contents/ui/DeviceListItem.qml
++++ b/src/kcm/package/contents/ui/DeviceListItem.qml
+@@ -178,12 +178,6 @@ ColumnLayout {
+ Layout.columnSpan: 2
+ Layout.alignment: Qt.AlignVCenter
+ visible: !balanceButton.checked
+-
+- value: Volume
+- onMoved: {
+- Volume = value;
+- Muted = (value === 0);
+- }
+ }
+
+ Repeater {
+@@ -203,16 +197,8 @@ ColumnLayout {
+ Layout.fillWidth: true
+
+ value: ChannelVolumes[index]
+- onMoved: {
+- delegate.pulseObject.setChannelVolume(index, value);
+-
+- // volumes are updated async, so we'll just assume it worked here
+- let newChannelVolumes = ChannelVolumes;
+- newChannelVolumes[index] = value;
+- Muted = newChannelVolumes.every((volume) => {
+- return volume === 0;
+- });
+- }
++
++ channel: index
+ }
+ }
+ }
+diff --git a/src/kcm/package/contents/ui/VolumeSlider.qml b/src/kcm/package/contents/ui/VolumeSlider.qml
+index c2cf0a31..fc0c4a6c 100644
+--- a/src/kcm/package/contents/ui/VolumeSlider.qml
++++ b/src/kcm/package/contents/ui/VolumeSlider.qml
+@@ -19,6 +19,8 @@ RowLayout {
+
+ property alias value: slider.value
+
++ property int channel: -1
++
+ QQC2.Slider {
+ id: slider
+
+@@ -35,7 +37,19 @@ RowLayout {
+ onMoved: {
+ // Since it is not possible to use stepSize without tickmarks being displayed, force 1% steps
+ // Unfortunately without stepSize, it cannot snap visually whilst scrolling by changing value instead of Volume as it breaks the binding
+- Volume = Math.round(value * 100 / PulseAudio.NormalVolume) * PulseAudio.NormalVolume / 100
++ let volume = Math.round(value * 100 / PulseAudio.NormalVolume) * PulseAudio.NormalVolume / 100
++ if (channel == -1) {
++ Volume = volume
++ Muted = volume === 0;
++ } else {
++ delegate.pulseObject.setChannelVolume(channel, volume);
++
++ // volumes are updated async, so we'll just assume it worked here
++ let newChannelVolumes = ChannelVolumes;
++ newChannelVolumes[index] = value;
++ Muted = newChannelVolumes.every(volume => volume === 0);
++ }
++
+ sliderRow.moved()
+ }
+
+--
+GitLab
+
diff --git a/kde-plasma/plasma-pa/plasma-pa-5.27.6-r1.ebuild b/kde-plasma/plasma-pa/plasma-pa-5.27.6-r1.ebuild
new file mode 100644
index 000000000000..9128d7fa29b0
--- /dev/null
+++ b/kde-plasma/plasma-pa/plasma-pa-5.27.6-r1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="forceoptional"
+KFMIN=5.106.0
+QTMIN=5.15.9
+inherit ecm plasma.kde.org
+
+DESCRIPTION="Plasma applet for audio volume management using PulseAudio"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE=""
+
+DEPEND="
+ dev-libs/glib:2
+ >=dev-qt/qtdbus-${QTMIN}:5
+ >=dev-qt/qtdeclarative-${QTMIN}:5
+ >=dev-qt/qtgui-${QTMIN}:5
+ >=kde-frameworks/kcoreaddons-${KFMIN}:5
+ >=kde-frameworks/kdeclarative-${KFMIN}:5
+ >=kde-frameworks/kglobalaccel-${KFMIN}:5
+ >=kde-frameworks/ki18n-${KFMIN}:5
+ >=kde-frameworks/plasma-${KFMIN}:5
+ media-libs/libcanberra
+ media-libs/libpulse
+"
+RDEPEND="${DEPEND}
+ >=dev-qt/qtquickcontrols2-${QTMIN}:5
+ >=kde-frameworks/kirigami-${KFMIN}:5
+ x11-themes/sound-theme-freedesktop
+"
+BDEPEND=">=kde-frameworks/kcmutils-${KFMIN}:5"
+
+PATCHES=( # in 5.27.7:
+ "${FILESDIR}/${P}-make-setGenericVolume-keep-balance.patch" # KDE-bug 435840
+ "${FILESDIR}/${P}-move-volume-logic-to-VolumeSlider.patch"
+)
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/
@ 2024-11-18 20:09 Andreas Sturmlechner
0 siblings, 0 replies; 7+ messages in thread
From: Andreas Sturmlechner @ 2024-11-18 20:09 UTC (permalink / raw
To: gentoo-commits
commit: 81e53ca62f7a959927ff9d1a846c56ae352e68db
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 18 19:47:05 2024 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Nov 18 20:03:47 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=81e53ca6
kde-plasma/plasma-pa: Pick 6.2 branch fixes
Harald Sitter (1):
listitemmenu: guard activePort against null
Ismael Asensio (1):
kcm: Fix speaker test layout for Pro-Audio profile
KDE-bugs:
https://bugs.kde.org/show_bug.cgi?id=495752
https://bugs.kde.org/show_bug.cgi?id=496067
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...ma-pa-6.2.3-guard-activePort-against-null.patch | 39 +++++++++++++++++
...a-6.2.3-kcm-fix-speaker-test-for-proaudio.patch | 50 ++++++++++++++++++++++
kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild | 49 +++++++++++++++++++++
3 files changed, 138 insertions(+)
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-guard-activePort-against-null.patch b/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-guard-activePort-against-null.patch
new file mode 100644
index 000000000000..11759a7c9cc6
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-guard-activePort-against-null.patch
@@ -0,0 +1,39 @@
+From 49925e2a9598f27a526534dc2b4b1bc0bcee639b Mon Sep 17 00:00:00 2001
+From: Harald Sitter <sitter@kde.org>
+Date: Fri, 15 Nov 2024 13:36:04 +0000
+Subject: [PATCH] listitemmenu: guard activePort against null
+
+it's not quite obvious why ports.at(index) would return null, but it's
+my best guess for why we have a crash here
+
+CCBUG: 496067
+
+
+(cherry picked from commit 23c8a3f982d5e0c8380c0870b047b251f67d179e)
+
+Co-authored-by: Harald Sitter <sitter@kde.org>
+---
+ src/qml/listitemmenu.cpp | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/qml/listitemmenu.cpp b/src/qml/listitemmenu.cpp
+index 5196a3de..9319bd26 100644
+--- a/src/qml/listitemmenu.cpp
++++ b/src/qml/listitemmenu.cpp
+@@ -333,9 +333,10 @@ QMenu *ListItemMenu::createMenu()
+ // Ports
+ const auto ports = device->ports();
+ bool activePortUnavailable = false;
+- if (device->activePortIndex() != static_cast<quint32>(-1)) {
+- auto *activePort = static_cast<Port *>(ports.at(device->activePortIndex()));
+- activePortUnavailable = activePort->availability() == Port::Unavailable;
++ if (auto index = device->activePortIndex(); index != static_cast<quint32>(-1)) {
++ if (auto activePort = ports.at(index)) {
++ activePortUnavailable = activePort->availability() == Port::Unavailable;
++ }
+ }
+
+ QMap<int, Port *> availablePorts;
+--
+GitLab
+
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-kcm-fix-speaker-test-for-proaudio.patch b/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-kcm-fix-speaker-test-for-proaudio.patch
new file mode 100644
index 000000000000..c84e2cba02bc
--- /dev/null
+++ b/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-kcm-fix-speaker-test-for-proaudio.patch
@@ -0,0 +1,50 @@
+From 0b4a26ada8258f4d25fa5069f239f1041eefecb5 Mon Sep 17 00:00:00 2001
+From: Ismael Asensio <isma.af@gmail.com>
+Date: Wed, 6 Nov 2024 17:31:17 +0000
+Subject: [PATCH] kcm: Fix speaker test layout for Pro-Audio profile
+
+Known audio channels (like 'front-right', `rear-left`) are assigned
+rows 0 to 2 in the Grid layout so they are placed in their spatial
+position around the user's avatar
+
+Unknown channels (those produced by the Pro Audio pipewire profile)
+have no spatial info and are assigned to rows 3 and following
+
+The spacer items were also assigned to row 3, which collided with
+those, breaking the layout. Let's give the spacers a high enough
+row number so there is no collision with an already occupied cell
+
+BUG: 495752
+FIXED-IN: 6.2.4
+
+
+(cherry picked from commit 36075f9e5f8d58ad2c687b91ec9a9cbef8c59fb3)
+
+Co-authored-by: Ismael Asensio <isma.af@gmail.com>
+---
+ src/kcm/ui/main.qml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/kcm/ui/main.qml b/src/kcm/ui/main.qml
+index dacaec4f..57f60c35 100644
+--- a/src/kcm/ui/main.qml
++++ b/src/kcm/ui/main.qml
+@@ -468,13 +468,13 @@ KCM.ScrollViewKCM {
+
+ // Spacers for when the left and right columns are empty
+ Item {
+- Layout.row: 3
++ Layout.row: 9 // So we don't override an occupied cell
+ Layout.column: 0
+ Layout.fillWidth: true
+ Layout.preferredWidth: Kirigami.Units.gridUnit * 4
+ }
+ Item {
+- Layout.row: 3
++ Layout.row: 9 // So we don't override an occupied cell
+ Layout.column: 2
+ Layout.fillWidth: true
+ Layout.preferredWidth: Kirigami.Units.gridUnit * 4
+--
+GitLab
+
diff --git a/kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild b/kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild
new file mode 100644
index 000000000000..46b0ae24d6ce
--- /dev/null
+++ b/kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="forceoptional"
+KFMIN=6.6.0
+PVCUT=$(ver_cut 1-3)
+QTMIN=6.7.2
+inherit ecm plasma.kde.org
+
+DESCRIPTION="Plasma applet for audio volume management using PulseAudio"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="6"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+IUSE=""
+
+RESTRICT="test" # missing selenium-webdriver-at-spi
+
+DEPEND="
+ dev-libs/glib:2
+ >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,widgets]
+ >=dev-qt/qtdeclarative-${QTMIN}:6
+ >=kde-frameworks/kconfig-${KFMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/kdbusaddons-${KFMIN}:6
+ >=kde-frameworks/kdeclarative-${KFMIN}:6
+ >=kde-frameworks/kglobalaccel-${KFMIN}:6
+ >=kde-frameworks/ki18n-${KFMIN}:6
+ >=kde-frameworks/kstatusnotifieritem-${KFMIN}:6
+ >=kde-frameworks/ksvg-${KFMIN}:6
+ >=kde-plasma/libplasma-${PVCUT}:6
+ media-libs/libcanberra
+ media-libs/libpulse
+ >=media-libs/pulseaudio-qt-1.6.0:=
+"
+RDEPEND="${DEPEND}
+ dev-libs/kirigami-addons:6
+ >=kde-frameworks/kirigami-${KFMIN}:6
+ >=kde-frameworks/kitemmodels-${KFMIN}:6
+ x11-themes/sound-theme-freedesktop
+"
+BDEPEND=">=kde-frameworks/kcmutils-${KFMIN}:6"
+
+PATCHES=(
+ "${FILESDIR}/${P}-kcm-fix-speaker-test-for-proaudio.patch" # KDE-bug #495752
+ "${FILESDIR}/${P}-guard-activePort-against-null.patch" # KDE-bug #496067
+)
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/
@ 2024-12-03 19:21 Andreas Sturmlechner
0 siblings, 0 replies; 7+ messages in thread
From: Andreas Sturmlechner @ 2024-12-03 19:21 UTC (permalink / raw
To: gentoo-commits
commit: 60b39959b41fa88fd8d450cfd3c540f5d04399c8
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 3 15:44:10 2024 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Tue Dec 3 19:21:21 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=60b39959
kde-plasma/plasma-pa: drop 6.2.3-r1
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
kde-plasma/plasma-pa/Manifest | 1 -
...ma-pa-6.2.3-guard-activePort-against-null.patch | 39 -----------------
...a-6.2.3-kcm-fix-speaker-test-for-proaudio.patch | 50 ----------------------
kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild | 49 ---------------------
4 files changed, 139 deletions(-)
diff --git a/kde-plasma/plasma-pa/Manifest b/kde-plasma/plasma-pa/Manifest
index d4ab98a37972..c2c2354c5b54 100644
--- a/kde-plasma/plasma-pa/Manifest
+++ b/kde-plasma/plasma-pa/Manifest
@@ -1,3 +1,2 @@
DIST plasma-pa-6.1.5.tar.xz 163064 BLAKE2B 91ce21182b9890bbabaff3f993dd8b15dc771a8b59d3c611f85b073b9d915aa4c83447d239fa20cd6cd65e3b91bb66ed7f0e63c0d452ec459cb15601bcc5ffc2 SHA512 c0219145c30e322bef6f8d578f2c880248175f52094d65ca5d1c49fde556137e2d1a3d5670a17d32e9d77dfc933444ddc2e30084e7dd15c77e3ad5eda1048714
-DIST plasma-pa-6.2.3.tar.xz 184892 BLAKE2B 8ef3eb52cb537df497756886ca8109fdeda71f4e735ec76178d3b29feaca8f2fdc07d0569d183138e2351bf3704676e3ef22c6dcd400dd9779094892fe3ab0d5 SHA512 9a4202d6aca8b62553e074a0ee5dbea0aee834339f16d78cce6cd1ad8151e015189fe98201c3adcf5534993826f8209a05385a1a7d191b08610ede3094a758d7
DIST plasma-pa-6.2.4.tar.xz 185592 BLAKE2B ccba9b35c8d7386fe2bd053ccd8e1978c046eec84943570c7f778d82f3d4a29eb75fe5953dc03b8ec4e2adbb545e99d7c9f20aa665fcba08e6757766b7256c97 SHA512 19f7999bd0598fc138026cf915b57cf70ab92603851dae19e5f178560d5d90552120a90c0203327eec667247664d2ef5d218fea6913338863a3ccccae7998cdb
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-guard-activePort-against-null.patch b/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-guard-activePort-against-null.patch
deleted file mode 100644
index 11759a7c9cc6..000000000000
--- a/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-guard-activePort-against-null.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 49925e2a9598f27a526534dc2b4b1bc0bcee639b Mon Sep 17 00:00:00 2001
-From: Harald Sitter <sitter@kde.org>
-Date: Fri, 15 Nov 2024 13:36:04 +0000
-Subject: [PATCH] listitemmenu: guard activePort against null
-
-it's not quite obvious why ports.at(index) would return null, but it's
-my best guess for why we have a crash here
-
-CCBUG: 496067
-
-
-(cherry picked from commit 23c8a3f982d5e0c8380c0870b047b251f67d179e)
-
-Co-authored-by: Harald Sitter <sitter@kde.org>
----
- src/qml/listitemmenu.cpp | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/src/qml/listitemmenu.cpp b/src/qml/listitemmenu.cpp
-index 5196a3de..9319bd26 100644
---- a/src/qml/listitemmenu.cpp
-+++ b/src/qml/listitemmenu.cpp
-@@ -333,9 +333,10 @@ QMenu *ListItemMenu::createMenu()
- // Ports
- const auto ports = device->ports();
- bool activePortUnavailable = false;
-- if (device->activePortIndex() != static_cast<quint32>(-1)) {
-- auto *activePort = static_cast<Port *>(ports.at(device->activePortIndex()));
-- activePortUnavailable = activePort->availability() == Port::Unavailable;
-+ if (auto index = device->activePortIndex(); index != static_cast<quint32>(-1)) {
-+ if (auto activePort = ports.at(index)) {
-+ activePortUnavailable = activePort->availability() == Port::Unavailable;
-+ }
- }
-
- QMap<int, Port *> availablePorts;
---
-GitLab
-
diff --git a/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-kcm-fix-speaker-test-for-proaudio.patch b/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-kcm-fix-speaker-test-for-proaudio.patch
deleted file mode 100644
index c84e2cba02bc..000000000000
--- a/kde-plasma/plasma-pa/files/plasma-pa-6.2.3-kcm-fix-speaker-test-for-proaudio.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0b4a26ada8258f4d25fa5069f239f1041eefecb5 Mon Sep 17 00:00:00 2001
-From: Ismael Asensio <isma.af@gmail.com>
-Date: Wed, 6 Nov 2024 17:31:17 +0000
-Subject: [PATCH] kcm: Fix speaker test layout for Pro-Audio profile
-
-Known audio channels (like 'front-right', `rear-left`) are assigned
-rows 0 to 2 in the Grid layout so they are placed in their spatial
-position around the user's avatar
-
-Unknown channels (those produced by the Pro Audio pipewire profile)
-have no spatial info and are assigned to rows 3 and following
-
-The spacer items were also assigned to row 3, which collided with
-those, breaking the layout. Let's give the spacers a high enough
-row number so there is no collision with an already occupied cell
-
-BUG: 495752
-FIXED-IN: 6.2.4
-
-
-(cherry picked from commit 36075f9e5f8d58ad2c687b91ec9a9cbef8c59fb3)
-
-Co-authored-by: Ismael Asensio <isma.af@gmail.com>
----
- src/kcm/ui/main.qml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/kcm/ui/main.qml b/src/kcm/ui/main.qml
-index dacaec4f..57f60c35 100644
---- a/src/kcm/ui/main.qml
-+++ b/src/kcm/ui/main.qml
-@@ -468,13 +468,13 @@ KCM.ScrollViewKCM {
-
- // Spacers for when the left and right columns are empty
- Item {
-- Layout.row: 3
-+ Layout.row: 9 // So we don't override an occupied cell
- Layout.column: 0
- Layout.fillWidth: true
- Layout.preferredWidth: Kirigami.Units.gridUnit * 4
- }
- Item {
-- Layout.row: 3
-+ Layout.row: 9 // So we don't override an occupied cell
- Layout.column: 2
- Layout.fillWidth: true
- Layout.preferredWidth: Kirigami.Units.gridUnit * 4
---
-GitLab
-
diff --git a/kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild b/kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild
deleted file mode 100644
index 46b0ae24d6ce..000000000000
--- a/kde-plasma/plasma-pa/plasma-pa-6.2.3-r1.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-ECM_HANDBOOK="forceoptional"
-KFMIN=6.6.0
-PVCUT=$(ver_cut 1-3)
-QTMIN=6.7.2
-inherit ecm plasma.kde.org
-
-DESCRIPTION="Plasma applet for audio volume management using PulseAudio"
-
-LICENSE="GPL-2" # TODO: CHECK
-SLOT="6"
-KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
-IUSE=""
-
-RESTRICT="test" # missing selenium-webdriver-at-spi
-
-DEPEND="
- dev-libs/glib:2
- >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,widgets]
- >=dev-qt/qtdeclarative-${QTMIN}:6
- >=kde-frameworks/kconfig-${KFMIN}:6
- >=kde-frameworks/kcoreaddons-${KFMIN}:6
- >=kde-frameworks/kdbusaddons-${KFMIN}:6
- >=kde-frameworks/kdeclarative-${KFMIN}:6
- >=kde-frameworks/kglobalaccel-${KFMIN}:6
- >=kde-frameworks/ki18n-${KFMIN}:6
- >=kde-frameworks/kstatusnotifieritem-${KFMIN}:6
- >=kde-frameworks/ksvg-${KFMIN}:6
- >=kde-plasma/libplasma-${PVCUT}:6
- media-libs/libcanberra
- media-libs/libpulse
- >=media-libs/pulseaudio-qt-1.6.0:=
-"
-RDEPEND="${DEPEND}
- dev-libs/kirigami-addons:6
- >=kde-frameworks/kirigami-${KFMIN}:6
- >=kde-frameworks/kitemmodels-${KFMIN}:6
- x11-themes/sound-theme-freedesktop
-"
-BDEPEND=">=kde-frameworks/kcmutils-${KFMIN}:6"
-
-PATCHES=(
- "${FILESDIR}/${P}-kcm-fix-speaker-test-for-proaudio.patch" # KDE-bug #495752
- "${FILESDIR}/${P}-guard-activePort-against-null.patch" # KDE-bug #496067
-)
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-12-03 19:22 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-22 23:01 [gentoo-commits] repo/gentoo:master commit in: kde-plasma/plasma-pa/files/, kde-plasma/plasma-pa/ Andreas Sturmlechner
-- strict thread matches above, loose matches on Subject: below --
2024-12-03 19:21 Andreas Sturmlechner
2024-11-18 20:09 Andreas Sturmlechner
2023-06-27 11:25 Andreas Sturmlechner
2019-04-03 12:02 Andreas Sturmlechner
2018-07-27 11:38 Lars Wendler
2018-07-10 12:04 Andreas Sturmlechner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox