summaryrefslogtreecommitdiffstats
path: root/src/dbus
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2020-03-24 09:40:10 +0100
committerMårten Nordheim <marten.nordheim@qt.io>2020-04-16 13:52:11 +0200
commit487dd80bce9c6006f349ccb09222e1c308200f0a (patch)
tree6f670113f0b787333d45315ab5b754c396536e0e /src/dbus
parentb34158d7a1e89e5e7b32d3425c3df52aacedbb31 (diff)
Introduce QSocketNotifier::activate(QSocketDescriptor, QSN::Type)
The pre-existing overload passes an int, but this can mean the descriptor gets truncated in compilations where the descriptor is 64-bit. The old overload with int is visible when querying the metaobject system so string-based connects still work as before, and connecting to it will produce a deprecation warning in the output. At the same time the PMF-based connect will, on recompile, pick the QSocketDescriptor overload. As an added improvement it also comes with the notification type, removing the need for separate slots where the code would be mostly shared anyway. The QSocketDescriptor type can be implicitly converted to and from qintptr to ensure existing code still compiles. It can also be constructed from Qt::HANDLE on Windows. In this same patch I also update the existing string-based connects in this module, which then includes updating the parameters for some slots as well. [ChangeLog][QtCore][QSocketNotifier] Added QSocketNotifier::activated(QSocketDescriptor, QSocketNotifier::Type). This replaces the activated(int) signal which in 64-bit environments could truncate the socket descriptor. If you use "activated" with the string-based connect() then you need to update the parameter type of the signal and slot if it had one. If you use it with the pointer to member function based connect() then all you need to do is update your slot's parameter type if it has one. If you need to compile your source code with multiple versions of Qt then connect() to this function using pointer to member function and update the slot's parameter type if needed. Task-number: QTBUG-70441 Change-Id: Ic43d6bc4c5bcb4040867b2ffad8d36fb01eed8af Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/dbus')
-rw-r--r--src/dbus/qdbusconnection_p.h6
-rw-r--r--src/dbus/qdbusintegrator.cpp4
2 files changed, 5 insertions, 5 deletions
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index da67a6c5d4..9bedbcc3a5 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -173,7 +173,7 @@ public:
public:
// typedefs
- typedef QMultiHash<int, Watcher> WatcherHash;
+ typedef QMultiHash<qintptr, Watcher> WatcherHash;
typedef QHash<int, DBusTimeout *> TimeoutHash;
typedef QVector<QDBusMessage> PendingMessageList;
@@ -283,8 +283,8 @@ public slots:
// public slots
void setDispatchEnabled(bool enable);
void doDispatch();
- void socketRead(int);
- void socketWrite(int);
+ void socketRead(qintptr);
+ void socketWrite(qintptr);
void objectDestroyed(QObject *o);
void relaySignal(QObject *obj, const QMetaObject *, int signalId, const QVariantList &args);
bool addSignalHook(const QString &key, const SignalHook &hook);
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 669b330f1d..b0a9342515 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -1205,7 +1205,7 @@ void QDBusConnectionPrivate::doDispatch()
}
}
-void QDBusConnectionPrivate::socketRead(int fd)
+void QDBusConnectionPrivate::socketRead(qintptr fd)
{
WatcherHash::ConstIterator it = watchers.constFind(fd);
while (it != watchers.constEnd() && it.key() == fd) {
@@ -1219,7 +1219,7 @@ void QDBusConnectionPrivate::socketRead(int fd)
doDispatch();
}
-void QDBusConnectionPrivate::socketWrite(int fd)
+void QDBusConnectionPrivate::socketWrite(qintptr fd)
{
WatcherHash::ConstIterator it = watchers.constFind(fd);
while (it != watchers.constEnd() && it.key() == fd) {