QDBusconnectionPrivate: Replace permanent connections with invokeMethod
Change-Id: Ife8d4495a98e34c8364293f3423b52f65ac187c4 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
7f9d213765
commit
712149802b
|
|
@ -245,6 +245,12 @@ private:
|
|||
|
||||
void handleAuthentication();
|
||||
|
||||
bool addSignalHook(const QString &key, const SignalHook &hook);
|
||||
bool removeSignalHook(const QString &key, const SignalHook &hook);
|
||||
|
||||
bool addSignalHookImpl(const QString &key, const SignalHook &hook);
|
||||
bool removeSignalHookImpl(const QString &key, const SignalHook &hook);
|
||||
|
||||
protected:
|
||||
void timerEvent(QTimerEvent *e) override;
|
||||
|
||||
|
|
@ -256,8 +262,6 @@ public slots:
|
|||
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);
|
||||
bool removeSignalHook(const QString &key, const SignalHook &hook);
|
||||
|
||||
private slots:
|
||||
void serviceOwnerChangedNoLock(const QString &name, const QString &oldOwner, const QString &newOwner);
|
||||
|
|
@ -269,8 +273,6 @@ signals:
|
|||
void dispatchStatusChanged();
|
||||
void spyHooksFinished(const QDBusMessage &msg);
|
||||
void messageNeedsSending(QDBusPendingCallPrivate *pcall, void *msg, int timeout = -1);
|
||||
bool signalNeedsConnecting(const QString &key, const QDBusConnectionPrivate::SignalHook &hook);
|
||||
bool signalNeedsDisconnecting(const QString &key, const QDBusConnectionPrivate::SignalHook &hook);
|
||||
void serviceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner);
|
||||
void callWithCallbackFailed(const QDBusError &error, const QDBusMessage &message);
|
||||
void newServerConnection(QDBusConnectionPrivate *newConnection);
|
||||
|
|
|
|||
|
|
@ -1050,10 +1050,6 @@ QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
|
|||
this, &QDBusConnectionPrivate::handleObjectCall, Qt::QueuedConnection);
|
||||
connect(this, &QDBusConnectionPrivate::messageNeedsSending,
|
||||
this, &QDBusConnectionPrivate::sendInternal);
|
||||
connect(this, &QDBusConnectionPrivate::signalNeedsConnecting,
|
||||
this, &QDBusConnectionPrivate::addSignalHook, Qt::BlockingQueuedConnection);
|
||||
connect(this, &QDBusConnectionPrivate::signalNeedsDisconnecting,
|
||||
this, &QDBusConnectionPrivate::removeSignalHook, Qt::BlockingQueuedConnection);
|
||||
|
||||
rootNode.flags = 0;
|
||||
|
||||
|
|
@ -2250,10 +2246,20 @@ bool QDBusConnectionPrivate::connectSignal(const QString &service,
|
|||
}
|
||||
|
||||
Q_ASSERT(thread() != QThread::currentThread());
|
||||
return emit signalNeedsConnecting(key, hook);
|
||||
return addSignalHook(key, hook);
|
||||
}
|
||||
|
||||
bool QDBusConnectionPrivate::addSignalHook(const QString &key, const SignalHook &hook)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
QMetaObject::invokeMethod(this, &QDBusConnectionPrivate::addSignalHookImpl,
|
||||
Qt::BlockingQueuedConnection, qReturnArg(result), key, hook);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool QDBusConnectionPrivate::addSignalHookImpl(const QString &key, const SignalHook &hook)
|
||||
{
|
||||
QDBusWriteLocker locker(ConnectAction, this);
|
||||
|
||||
|
|
@ -2343,10 +2349,20 @@ bool QDBusConnectionPrivate::disconnectSignal(const QString &service,
|
|||
}
|
||||
|
||||
Q_ASSERT(thread() != QThread::currentThread());
|
||||
return emit signalNeedsDisconnecting(key, hook);
|
||||
return removeSignalHook(key, hook);
|
||||
}
|
||||
|
||||
bool QDBusConnectionPrivate::removeSignalHook(const QString &key, const SignalHook &hook)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
QMetaObject::invokeMethod(this, &QDBusConnectionPrivate::removeSignalHookImpl,
|
||||
Qt::BlockingQueuedConnection, qReturnArg(result), key, hook);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool QDBusConnectionPrivate::removeSignalHookImpl(const QString &key, const SignalHook &hook)
|
||||
{
|
||||
// remove it from our list:
|
||||
QDBusWriteLocker locker(ConnectAction, this);
|
||||
|
|
@ -2475,7 +2491,7 @@ void QDBusConnectionPrivate::connectRelay(const QString &service,
|
|||
}
|
||||
|
||||
Q_ASSERT(thread() != QThread::currentThread());
|
||||
emit signalNeedsConnecting(key, hook);
|
||||
addSignalHook(key, hook);
|
||||
}
|
||||
|
||||
void QDBusConnectionPrivate::disconnectRelay(const QString &service,
|
||||
|
|
@ -2499,7 +2515,7 @@ void QDBusConnectionPrivate::disconnectRelay(const QString &service,
|
|||
}
|
||||
|
||||
Q_ASSERT(thread() != QThread::currentThread());
|
||||
emit signalNeedsDisconnecting(key, hook);
|
||||
removeSignalHook(key, hook);
|
||||
}
|
||||
|
||||
bool QDBusConnectionPrivate::shouldWatchService(const QString &service)
|
||||
|
|
|
|||
Loading…
Reference in New Issue