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
This commit is contained in:
Lars Wendler
2018-07-27 13:38:08 +02:00
parent 352a1a780d
commit a6a4c43375
2 changed files with 312 additions and 0 deletions

View File

@@ -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;

View File

@@ -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"
)