[SCM] plasma-nm packaging branch, kubuntu_xenial_archive, updated. ubuntu/4%5.4.2-0ubuntu1-1-g6a66563

Clive Johnston clivejo-guest at moszumanska.debian.org
Mon Oct 26 17:53:28 UTC 2015


Gitweb-URL: http://git.debian.org/?p=pkg-kde/plasma/plasma-nm.git;a=commitdiff;h=6a66563

The following commit has been merged in the kubuntu_xenial_archive branch:
commit 6a66563c56edfae3631d89bba1b3bbc66476b931
Author: Clive Johnston <clivejo at aol.com>
Date:   Mon Oct 26 17:53:22 2015 +0000

    Adding patch to fix LP Bug 1509334
    
    * Adding patch - kubuntu_upstream_fix_making_bluez_asynchronous.diff
    * Updating changelog
---
 debian/changelog                                   |   8 +
 ...ntu_upstream_fix_making_bluez_asynchronous.diff | 217 +++++++++++++++++++++
 debian/patches/series                              |   1 +
 3 files changed, 226 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 0ee9195..6bab8ae 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+plasma-nm (4:5.4.2-0ubuntu2) UNRELEASED; urgency=medium
+
+  * Applying patch (kubuntu_upstream_fix_making_bluez_asynchronous.diff)
+    which will be applied upstream to make all bluez calls asynchronous,
+    fixing Launchpad Bug 1509334  Patch by Jan Grulich jgrulich at redhat.com
+
+ -- Clive Johnston <clivejo at aol.com>  Mon, 26 Oct 2015 16:14:16 +0000
+
 plasma-nm (4:5.4.2-0ubuntu1) wily; urgency=medium
 
   * New upstream release
diff --git a/debian/patches/kubuntu_upstream_fix_making_bluez_asynchronous.diff b/debian/patches/kubuntu_upstream_fix_making_bluez_asynchronous.diff
new file mode 100644
index 0000000..13ba4d6
--- /dev/null
+++ b/debian/patches/kubuntu_upstream_fix_making_bluez_asynchronous.diff
@@ -0,0 +1,217 @@
+From: Jan Grulich <jgrulich at redhat.com>
+Date: Sun, 25 Oct 2015 16:36:44 +0000
+Subject: Make all bluez calls asynchronous
+X-Git-Url: http://quickgit.kde.org/?p=plasma-nm.git&a=commitdiff&h=48a45ebad0e1d5ecc023a9e8866a95d47c76790f
+---
+Make all bluez calls asynchronous
+
+REVIEW:125785
+BUG:354230
+---
+
+
+--- a/libs/handler.cpp
++++ b/libs/handler.cpp
+@@ -42,6 +42,7 @@
+ #endif
+ 
+ #include <QDBusError>
++#include <QDBusPendingReply>
+ #include <QIcon>
+ 
+ #include <KNotification>
+@@ -54,9 +55,8 @@
+ #include <KIconLoader>
+ #include <KWallet/Wallet>
+ 
+-Handler::Handler(QObject* parent)
++Handler::Handler(QObject *parent)
+     : QObject(parent)
+-    , m_tmpBluetoothEnabled(isBtEnabled())
+ #if !NM_CHECK_VERSION(1, 2, 0)
+     , m_tmpWimaxEnabled(NetworkManager::isWimaxEnabled())
+ #endif
+@@ -281,22 +281,19 @@
+ void Handler::enableAirplaneMode(bool enable)
+ {
+     if (enable) {
+-        m_tmpBluetoothEnabled = isBtEnabled();
+ #if !NM_CHECK_VERSION(1, 2, 0)
+         m_tmpWimaxEnabled = NetworkManager::isWimaxEnabled();
+ #endif
+         m_tmpWirelessEnabled = NetworkManager::isWirelessEnabled();
+         m_tmpWwanEnabled = NetworkManager::isWwanEnabled();
+-        enableBt(false);
++        enableBluetooth(false);
+ #if !NM_CHECK_VERSION(1, 2, 0)
+         enableWimax(false);
+ #endif
+         enableWireless(false);
+         enableWwan(false);
+     } else {
+-        if (m_tmpBluetoothEnabled) {
+-            enableBt(true);
+-        }
++        enableBluetooth(true);
+ #if !NM_CHECK_VERSION(1, 2, 0)
+         if (m_tmpWimaxEnabled) {
+             enableWimax(true);
+@@ -311,6 +308,64 @@
+     }
+ }
+ 
++void Handler::enableBluetooth(bool enable)
++{
++    qDBusRegisterMetaType< QMap<QDBusObjectPath, NMVariantMapMap > >();
++
++    QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", "/", "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
++    QDBusPendingReply<QMap<QDBusObjectPath, NMVariantMapMap> > reply = QDBusConnection::systemBus().asyncCall(message);
++    QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
++    connect(watcher, &QDBusPendingCallWatcher::finished,
++        [this, enable] (QDBusPendingCallWatcher *watcher) {
++            QDBusPendingReply<QMap<QDBusObjectPath, NMVariantMapMap> > reply = *watcher;
++            if (reply.isValid()) {
++                Q_FOREACH (const QDBusObjectPath &path, reply.value().keys()) {
++                    const QString objPath = path.path();
++                    qCDebug(PLASMA_NM) << "inspecting path" << objPath;
++                    const QStringList interfaces = reply.value().value(path).keys();
++                    qCDebug(PLASMA_NM) << "interfaces:" << interfaces;
++                    if (interfaces.contains("org.bluez.Adapter1")) {
++                        // We need to check previous state first
++                        if (!enable) {
++                            QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", objPath, "org.freedesktop.DBus.Properties", "Get");
++                            QList<QVariant> arguments;
++                            arguments << QLatin1Literal("org.bluez.Adapter1");
++                            arguments << QLatin1Literal("Powered");
++                            message.setArguments(arguments);
++                            QDBusPendingReply<QVariant> getReply = QDBusConnection::systemBus().asyncCall(message);
++                            QDBusPendingCallWatcher *getWatcher = new QDBusPendingCallWatcher(getReply, this);
++                                connect(getWatcher, &QDBusPendingCallWatcher::finished,
++                                    [this, objPath] (QDBusPendingCallWatcher *watcher) {
++                                        QDBusPendingReply<QVariant> reply = *watcher;
++                                        if (reply.isValid()) {
++                                            m_bluetoothAdapters.insert(objPath, reply.value().toBool());
++                                            QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", objPath, "org.freedesktop.DBus.Properties", "Set");
++                                            QList<QVariant> arguments;
++                                            arguments << QLatin1Literal("org.bluez.Adapter1");
++                                            arguments << QLatin1Literal("Powered");
++                                            arguments << QVariant::fromValue(QDBusVariant(QVariant(false)));
++                                            message.setArguments(arguments);
++                                            QDBusConnection::systemBus().asyncCall(message);
++                                        }
++
++                                    });
++                            getWatcher->deleteLater();
++                        } else if (enable && m_bluetoothAdapters.value(objPath)) {
++                            QDBusMessage message = QDBusMessage::createMethodCall("org.bluez", objPath, "org.freedesktop.DBus.Properties", "Set");
++                            QList<QVariant> arguments;
++                            arguments << QLatin1Literal("org.bluez.Adapter1");
++                            arguments << QLatin1Literal("Powered");
++                            arguments << QVariant::fromValue(QDBusVariant(QVariant(enable)));
++                            message.setArguments(arguments);
++                            QDBusConnection::systemBus().asyncCall(message);
++                        }
++                    }
++                }
++            }
++        });
++    watcher->deleteLater();
++}
++
+ void Handler::enableNetworking(bool enable)
+ {
+     NetworkManager::setNetworkingEnabled(enable);
+@@ -331,54 +386,6 @@
+ void Handler::enableWwan(bool enable)
+ {
+     NetworkManager::setWwanEnabled(enable);
+-}
+-
+-bool Handler::isBtEnabled()
+-{
+-    qDBusRegisterMetaType< QMap<QDBusObjectPath, NMVariantMapMap > >();
+-    bool result = false;
+-
+-    QDBusInterface managerIface("org.bluez", "/", "org.freedesktop.DBus.ObjectManager", QDBusConnection::systemBus(), this);
+-    QDBusReply<QMap<QDBusObjectPath, NMVariantMapMap> > reply = managerIface.call("GetManagedObjects");
+-    if (reply.isValid()) {
+-        Q_FOREACH (const QDBusObjectPath &path, reply.value().keys()) {
+-            const QString objPath = path.path();
+-            qCDebug(PLASMA_NM) << "inspecting path" << objPath;
+-            const QStringList interfaces = reply.value().value(path).keys();
+-            qCDebug(PLASMA_NM) << "interfaces:" << interfaces;
+-            if (interfaces.contains("org.bluez.Adapter1")) {
+-                QDBusInterface adapterIface("org.bluez", objPath, "org.bluez.Adapter1", QDBusConnection::systemBus(), this);
+-                const bool adapterEnabled = adapterIface.property("Powered").toBool();
+-                qCDebug(PLASMA_NM) << "Adapter" << objPath << "enabled:" << adapterEnabled;
+-                result |= adapterEnabled;
+-            }
+-        }
+-    } else {
+-        qCDebug(PLASMA_NM) << "Failed to enumerate BT adapters";
+-    }
+-
+-    return result;
+-}
+-
+-void Handler::enableBt(bool enable)
+-{
+-    QDBusInterface managerIface("org.bluez", "/", "org.freedesktop.DBus.ObjectManager", QDBusConnection::systemBus(), this);
+-    QDBusReply<QMap<QDBusObjectPath, NMVariantMapMap> > reply = managerIface.call("GetManagedObjects");
+-    if (reply.isValid()) {
+-        Q_FOREACH (const QDBusObjectPath &path, reply.value().keys()) {
+-            const QString objPath = path.path();
+-            qCDebug(PLASMA_NM) << "inspecting path" << objPath;
+-            const QStringList interfaces = reply.value().value(path).keys();
+-            qCDebug(PLASMA_NM) << "interfaces:" << interfaces;
+-            if (interfaces.contains("org.bluez.Adapter1")) {
+-                QDBusInterface adapterIface("org.bluez", objPath, "org.bluez.Adapter1", QDBusConnection::systemBus(), this);
+-                qCDebug(PLASMA_NM) << "Enabling adapter:" << objPath << enable;
+-                adapterIface.setProperty("Powered", enable);
+-            }
+-        }
+-    } else {
+-        qCDebug(PLASMA_NM) << "Failed to enumerate BT adapters";
+-    }
+ }
+ 
+ // void Handler::editConnection(const QString& uuid)
+
+--- a/libs/handler.h
++++ b/libs/handler.h
+@@ -84,7 +84,6 @@
+      */
+     void disconnectAll();
+     void enableAirplaneMode(bool enable);
+-    void enableBt(bool enable);
+     void enableNetworking(bool enable);
+     void enableWireless(bool enable);
+ #if !NM_CHECK_VERSION(1, 2, 0)
+@@ -113,13 +112,12 @@
+ 
+ private Q_SLOTS:
+     void initKdedModule();
+-    void replyFinished(QDBusPendingCallWatcher * watcher);
++    void replyFinished(QDBusPendingCallWatcher *watcher);
+ #if WITH_MODEMMANAGER_SUPPORT
+     void unlockRequiredChanged(MMModemLock modemLock);
+ #endif
+ 
+ private:
+-    bool m_tmpBluetoothEnabled;
+ #if !NM_CHECK_VERSION(1, 2, 0)
+     bool m_tmpWimaxEnabled;
+ #endif
+@@ -131,8 +129,9 @@
+     QString m_tmpConnectionUuid;
+     QString m_tmpDevicePath;
+     QString m_tmpSpecificPath;
++    QMap<QString, bool> m_bluetoothAdapters;
+ 
+-    bool isBtEnabled();
++    void enableBluetooth(bool enable);
+     QDBusInterface m_agentIface;
+ };
+ 
+
+
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..d51d09c
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1 @@
+kubuntu_upstream_fix_making_bluez_asynchronous.diff

-- 
plasma-nm packaging



More information about the pkg-kde-commits mailing list