Hello community, here is the log from the commit of package bluez-qt for openSUSE:Factory checked in at 2020-10-12 13:53:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bluez-qt (Old) and /work/SRC/openSUSE:Factory/.bluez-qt.new.3486 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bluez-qt" Mon Oct 12 13:53:12 2020 rev:70 rq:840788 version:5.75.0 Changes: -------- --- /work/SRC/openSUSE:Factory/bluez-qt/bluez-qt.changes 2020-09-18 14:37:12.259777646 +0200 +++ /work/SRC/openSUSE:Factory/.bluez-qt.new.3486/bluez-qt.changes 2020-10-12 13:53:43.930077829 +0200 @@ -1,0 +2,15 @@ +Mon Oct 5 08:32:47 UTC 2020 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 5.75.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/kde-frameworks-5.75.0 +- Changes since 5.74.0: + * Add rfkill property to manager + * Add status property to rfkill + * Register Rfkill for QML + * Export Rfkill + * d-pointerify rfkill + * Support providing service data values for LE advertisements + +------------------------------------------------------------------- Old: ---- bluez-qt-5.74.0.tar.xz bluez-qt-5.74.0.tar.xz.sig New: ---- bluez-qt-5.75.0.tar.xz bluez-qt-5.75.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bluez-qt.spec ++++++ --- /var/tmp/diff_new_pack.z2ebRz/_old 2020-10-12 13:53:44.558078084 +0200 +++ /var/tmp/diff_new_pack.z2ebRz/_new 2020-10-12 13:53:44.562078086 +0200 @@ -18,7 +18,7 @@ %define sonum 6 %define _libname KF5BluezQt -%define _tar_path 5.74 +%define _tar_path 5.75 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) @@ -26,7 +26,7 @@ # Only needed for the package signature condition %bcond_without lang Name: bluez-qt -Version: 5.74.0 +Version: 5.75.0 Release: 0 Summary: Async Bluez wrapper library License: LGPL-2.1-or-later ++++++ bluez-qt-5.74.0.tar.xz -> bluez-qt-5.75.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/CMakeLists.txt new/bluez-qt-5.75.0/CMakeLists.txt --- old/bluez-qt-5.74.0/CMakeLists.txt 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/CMakeLists.txt 2020-10-04 11:45:25.000000000 +0200 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.5) -set(KF5_VERSION "5.74.0") # handled by release scripts +set(KF5_VERSION "5.75.0") # handled by release scripts project(BluezQt VERSION ${KF5_VERSION}) include(FeatureSummary) -find_package(ECM 5.74.0 NO_MODULE) +find_package(ECM 5.75.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/CMakeLists.txt new/bluez-qt-5.75.0/src/CMakeLists.txt --- old/bluez-qt-5.74.0/src/CMakeLists.txt 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/CMakeLists.txt 2020-10-04 11:45:25.000000000 +0200 @@ -144,6 +144,7 @@ Profile PendingCall Request + Rfkill ObexManager ObexAgent ObexTransfer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/imports/bluezqtextensionplugin.cpp new/bluez-qt-5.75.0/src/imports/bluezqtextensionplugin.cpp --- old/bluez-qt-5.74.0/src/imports/bluezqtextensionplugin.cpp 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/imports/bluezqtextensionplugin.cpp 2020-10-04 11:45:25.000000000 +0200 @@ -17,6 +17,7 @@ #include "device.h" #include "pendingcall.h" #include "services.h" +#include "rfkill.h" #include <QtQml> // krazy:exclude=includes @@ -70,5 +71,6 @@ qmlRegisterUncreatableType<DeclarativeInput>(uri, 1, 0, "Input", QStringLiteral("Input cannot be created")); qmlRegisterUncreatableType<DeclarativeMediaPlayer>(uri, 1, 0, "MediaPlayer", QStringLiteral("MediaPlayer cannot be created")); qmlRegisterUncreatableType<PendingCall>(uri, 1, 0, "PendingCall", QStringLiteral("PendingCall cannot be created")); + qmlRegisterUncreatableType<Rfkill>(uri, 1, 0, "Rfkill", QStringLiteral("Rfkill cannot be created")); qmlRegisterSingletonType(uri, 1, 0, "Services", services_singleton); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/leadvertisement.cpp new/bluez-qt-5.75.0/src/leadvertisement.cpp --- old/bluez-qt-5.74.0/src/leadvertisement.cpp 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/leadvertisement.cpp 2020-10-04 11:45:25.000000000 +0200 @@ -33,6 +33,16 @@ return d->m_serviceUuids; } +QHash<QString, QByteArray> LEAdvertisement::serviceData() const +{ + return d->m_serviceData; +} + +void LEAdvertisement::setServiceData(const QHash<QString, QByteArray> &data) +{ + d->m_serviceData = data; +} + void LEAdvertisement::release() { } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/leadvertisement.h new/bluez-qt-5.75.0/src/leadvertisement.h --- old/bluez-qt-5.74.0/src/leadvertisement.h 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/leadvertisement.h 2020-10-04 11:45:25.000000000 +0200 @@ -50,6 +50,21 @@ virtual QStringList serviceUuids() const; /** + * Returns the service data included in the advertisement. + * + * @since 5.75 + */ + QHash<QString, QByteArray> serviceData() const; + + /** + * Sets the service data to include in the advertisement. + * Keys are the UUIDs of the associated data. + * + * @since 5.75 + */ + void setServiceData(const QHash<QString, QByteArray> &data); + + /** * Indicates that the LEAdvertisement was unregistered. * * This method gets called when the service daemon removes the Advertisement. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/leadvertisement_p.h new/bluez-qt-5.75.0/src/leadvertisement_p.h --- old/bluez-qt-5.74.0/src/leadvertisement_p.h 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/leadvertisement_p.h 2020-10-04 11:45:25.000000000 +0200 @@ -20,6 +20,7 @@ explicit LEAdvertisementPrivate(const QStringList &serviceUuids); QStringList m_serviceUuids; QDBusObjectPath m_objectPath; + QHash<QString, QByteArray> m_serviceData; }; } // namespace BluezQt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/leadvertisementadaptor.cpp new/bluez-qt-5.75.0/src/leadvertisementadaptor.cpp --- old/bluez-qt-5.74.0/src/leadvertisementadaptor.cpp 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/leadvertisementadaptor.cpp 2020-10-04 11:45:25.000000000 +0200 @@ -9,6 +9,7 @@ #include "leadvertisementadaptor.h" #include "leadvertisement.h" +#include <QDBusMetaType> #include <QDBusObjectPath> namespace BluezQt @@ -18,6 +19,7 @@ : QDBusAbstractAdaptor(parent) , m_advertisement(parent) { + qDBusRegisterMetaType<QHash<QString, QVariant>>(); } QString LEAdvertisementAdaptor::type() const @@ -30,6 +32,18 @@ return m_advertisement->serviceUuids(); } +QHash<QString, QVariant> LEAdvertisementAdaptor::serviceData() const +{ + // bluez wants the value wrapped into a variant... + QHash<QString, QVariant> data; + const auto sd = m_advertisement->serviceData(); + data.reserve(sd.size()); + for (auto it = sd.begin(); it != sd.end(); ++it) { + data.insert(it.key(), it.value()); + } + return data; +} + void LEAdvertisementAdaptor::Release() { m_advertisement->release(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/leadvertisementadaptor.h new/bluez-qt-5.75.0/src/leadvertisementadaptor.h --- old/bluez-qt-5.74.0/src/leadvertisementadaptor.h 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/leadvertisementadaptor.h 2020-10-04 11:45:25.000000000 +0200 @@ -22,6 +22,7 @@ Q_CLASSINFO("D-Bus Interface", "org.bluez.LEAdvertisement1") Q_PROPERTY(QString Type READ type) Q_PROPERTY(QStringList ServiceUUIDs READ serviceUuids) + Q_PROPERTY(QHash<QString, QVariant> ServiceData READ serviceData) public: explicit LEAdvertisementAdaptor(LEAdvertisement *parent); @@ -29,6 +30,7 @@ QString type() const; QStringList serviceUuids() const; + QHash<QString, QVariant> serviceData() const; public Q_SLOTS: Q_NOREPLY void Release(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/manager.cpp new/bluez-qt-5.75.0/src/manager.cpp --- old/bluez-qt-5.74.0/src/manager.cpp 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/manager.cpp 2020-10-04 11:45:25.000000000 +0200 @@ -239,4 +239,9 @@ } #endif +Rfkill *Manager::rfkill() const +{ + return d->m_rfkill; +} + } // namespace BluezQt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/manager.h new/bluez-qt-5.75.0/src/manager.h --- old/bluez-qt-5.74.0/src/manager.h 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/manager.h 2020-10-04 11:45:25.000000000 +0200 @@ -13,6 +13,7 @@ #include "types.h" #include "bluezqt_export.h" +#include "rfkill.h" namespace BluezQt { @@ -85,6 +86,7 @@ Q_PROPERTY(AdapterPtr usableAdapter READ usableAdapter NOTIFY usableAdapterChanged) Q_PROPERTY(QList<AdapterPtr> adapters READ adapters) Q_PROPERTY(QList<DevicePtr> devices READ devices) + Q_PROPERTY(Rfkill *rfkill READ rfkill CONSTANT) public: /** @@ -294,6 +296,8 @@ MediaPtr media() const; #endif + Rfkill *rfkill() const; + Q_SIGNALS: /** * Indicates that operational state have changed. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/rfkill.cpp new/bluez-qt-5.75.0/src/rfkill.cpp --- old/bluez-qt-5.74.0/src/rfkill.cpp 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/rfkill.cpp 2020-10-04 11:45:25.000000000 +0200 @@ -7,6 +7,8 @@ */ #include "rfkill.h" +#include "rfkill_p.h" + #include "debug.h" #ifdef Q_OS_LINUX @@ -49,9 +51,7 @@ Rfkill::Rfkill(QObject *parent) : QObject(parent) - , m_readFd(-1) - , m_writeFd(-1) - , m_state(Unknown) + , d(new RfkillPrivate) { init(); } @@ -59,28 +59,28 @@ Rfkill::~Rfkill() { #ifdef Q_OS_LINUX - if (m_readFd != -1) { - ::close(m_readFd); + if (d->m_readFd != -1) { + ::close(d->m_readFd); } - if (m_writeFd != -1) { - ::close(m_writeFd); + if (d->m_writeFd != -1) { + ::close(d->m_writeFd); } #endif } Rfkill::State Rfkill::state() const { - return m_state; + return d->m_state; } bool Rfkill::block() { - if (m_state == SoftBlocked || m_state == HardBlocked) { + if (d->m_state == SoftBlocked || d->m_state == HardBlocked) { return true; } - if (m_state != Unblocked) { + if (d->m_state != Unblocked) { return false; } @@ -89,11 +89,11 @@ bool Rfkill::unblock() { - if (m_state == Unblocked) { + if (d->m_state == Unblocked) { return true; } - if (m_state != SoftBlocked) { + if (d->m_state != SoftBlocked) { return false; } @@ -102,34 +102,34 @@ void Rfkill::devReadyRead() { - State oldState = m_state; + State oldState = d->m_state; updateRfkillDevices(); - if (m_state != oldState) { - Q_EMIT stateChanged(m_state); + if (d->m_state != oldState) { + Q_EMIT stateChanged(d->m_state); } } void Rfkill::init() { #ifdef Q_OS_LINUX - m_readFd = ::open("/dev/rfkill", O_RDONLY | O_CLOEXEC); + d->m_readFd = ::open("/dev/rfkill", O_RDONLY | O_CLOEXEC); - if (m_readFd == -1) { + if (d->m_readFd == -1) { qCWarning(BLUEZQT) << "Cannot open /dev/rfkill for reading!"; return; } - if (::fcntl(m_readFd, F_SETFL, O_NONBLOCK) < 0) { - ::close(m_readFd); - m_readFd = -1; + if (::fcntl(d->m_readFd, F_SETFL, O_NONBLOCK) < 0) { + ::close(d->m_readFd); + d->m_readFd = -1; return; } updateRfkillDevices(); - QSocketNotifier *notifier = new QSocketNotifier(m_readFd, QSocketNotifier::Read, this); + QSocketNotifier *notifier = new QSocketNotifier(d->m_readFd, QSocketNotifier::Read, this); connect(notifier, &QSocketNotifier::activated, this, &Rfkill::devReadyRead); #endif } @@ -139,20 +139,20 @@ #ifndef Q_OS_LINUX return false; #else - if (m_writeFd != -1) { + if (d->m_writeFd != -1) { return true; } - m_writeFd = ::open("/dev/rfkill", O_WRONLY | O_CLOEXEC); + d->m_writeFd = ::open("/dev/rfkill", O_WRONLY | O_CLOEXEC); - if (m_writeFd == -1) { + if (d->m_writeFd == -1) { qCWarning(BLUEZQT) << "Cannot open /dev/rfkill for writing!"; return false; } - if (::fcntl(m_writeFd, F_SETFL, O_NONBLOCK) < 0) { - ::close(m_writeFd); - m_writeFd = -1; + if (::fcntl(d->m_writeFd, F_SETFL, O_NONBLOCK) < 0) { + ::close(d->m_writeFd); + d->m_writeFd = -1; return false; } @@ -175,12 +175,12 @@ void Rfkill::updateRfkillDevices() { #ifdef Q_OS_LINUX - if (m_readFd == -1) { + if (d->m_readFd == -1) { return; } rfkill_event event; - while (::read(m_readFd, &event, sizeof(event)) == sizeof(event)) { + while (::read(d->m_readFd, &event, sizeof(event)) == sizeof(event)) { if (event.type != RFKILL_TYPE_BLUETOOTH) { continue; } @@ -188,15 +188,15 @@ switch (event.op) { case RFKILL_OP_ADD: case RFKILL_OP_CHANGE: - m_devices[event.idx] = getState(event); + d->m_devices[event.idx] = getState(event); break; case RFKILL_OP_DEL: - m_devices.remove(event.idx); + d->m_devices.remove(event.idx); break; case RFKILL_OP_CHANGE_ALL: - for (auto it = m_devices.begin(); it != m_devices.end(); ++it) { + for (auto it = d->m_devices.begin(); it != d->m_devices.end(); ++it) { it.value() = getState(event); } break; @@ -207,19 +207,19 @@ } // Update global state - m_state = Unknown; + d->m_state = Unknown; - for (State state : qAsConst(m_devices)) { + for (State state : qAsConst(d->m_devices)) { Q_ASSERT(state != Unknown); - if (m_state == Unknown) { - m_state = state; - } else if (state > m_state) { - m_state = state; + if (d->m_state == Unknown) { + d->m_state = state; + } else if (state > d->m_state) { + d->m_state = state; } } - qCDebug(BLUEZQT) << "Rfkill global state changed:" << m_state; + qCDebug(BLUEZQT) << "Rfkill global state changed:" << d->m_state; #endif } @@ -239,7 +239,7 @@ event.type = RFKILL_TYPE_BLUETOOTH; event.soft = soft; - bool ret = ::write(m_writeFd, &event, sizeof(event)) == sizeof(event); + bool ret = ::write(d->m_writeFd, &event, sizeof(event)) == sizeof(event); qCDebug(BLUEZQT) << "Setting Rfkill soft block succeeded:" << ret; return ret; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/rfkill.h new/bluez-qt-5.75.0/src/rfkill.h --- old/bluez-qt-5.74.0/src/rfkill.h 2020-09-06 11:04:06.000000000 +0200 +++ new/bluez-qt-5.75.0/src/rfkill.h 2020-10-04 11:45:25.000000000 +0200 @@ -12,12 +12,19 @@ #include <QHash> #include <QObject> +#include "bluezqt_export.h" + +#include <memory> + namespace BluezQt { -class Rfkill : public QObject +class RfkillPrivate; + +class BLUEZQT_EXPORT Rfkill : public QObject { Q_OBJECT + Q_PROPERTY(State state READ state NOTIFY stateChanged) public: enum State { @@ -26,6 +33,7 @@ HardBlocked = 2, Unknown = 3 }; + Q_ENUM(State) explicit Rfkill(QObject *parent = nullptr); ~Rfkill(); @@ -45,11 +53,7 @@ bool openForWriting(); void updateRfkillDevices(); bool setSoftBlock(quint8 soft); - - int m_readFd; - int m_writeFd; - State m_state; - QHash<quint32, State> m_devices; + std::unique_ptr<RfkillPrivate> d; }; } // namespace BluezQt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bluez-qt-5.74.0/src/rfkill_p.h new/bluez-qt-5.75.0/src/rfkill_p.h --- old/bluez-qt-5.74.0/src/rfkill_p.h 1970-01-01 01:00:00.000000000 +0100 +++ new/bluez-qt-5.75.0/src/rfkill_p.h 2020-10-04 11:45:25.000000000 +0200 @@ -0,0 +1,28 @@ +/* + * BluezQt - Asynchronous Bluez wrapper library + * + * SPDX-FileCopyrightText: 2015 David Rosca <now...@gmail.com> + * + * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL + */ + +#ifndef BLUEZQT_RFKILL_P_H +#define BLUEZQT_RFKILL_P_H + +#include <QHash> +#include <QObject> + +#include "rfkill.h" +#include "bluezqt_export.h" + +namespace BluezQt +{ + struct RfkillPrivate { + int m_readFd = -1; + int m_writeFd = -1; + Rfkill::State m_state = Rfkill::State::Unknown; + QHash<quint32, Rfkill::State> m_devices; + }; +} // namespace BluezQt + +#endif // BLUEZQT_RFKILL_P_H