diff options
Diffstat (limited to 'src/tqdbusintegrator.cpp')
-rw-r--r-- | src/tqdbusintegrator.cpp | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/src/tqdbusintegrator.cpp b/src/tqdbusintegrator.cpp index 2d3322a..8e2470e 100644 --- a/src/tqdbusintegrator.cpp +++ b/src/tqdbusintegrator.cpp @@ -29,6 +29,7 @@ #include <tqtimer.h> #include "tqdbusconnection_p.h" +#include "tqdbusdispatcher_p.h" #include "tqdbusmessage.h" Atomic::Atomic(int value) : m_value(value) @@ -273,16 +274,14 @@ int TQT_DBusConnectionPrivate::registerMessageMetaType() TQT_DBusConnectionPrivate::TQT_DBusConnectionPrivate(TQObject *parent) : TQObject(parent), ref(1), mode(InvalidMode), connection(0), server(0), - dispatcher(0), inDispatch(false) + dispatcher(new TQT_DBusDispatcher(this)) { static const int msgType = registerMessageMetaType(); Q_UNUSED(msgType); + dbus_threads_init_default(); dbus_error_init(&error); - dispatcher = new TQTimer(this); - TQObject::connect(dispatcher, TQ_SIGNAL(timeout()), this, TQ_SLOT(dispatch())); - m_resultEmissionQueueTimer = new TQTimer(this); TQObject::connect(m_resultEmissionQueueTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(transmitResultEmissionQueue())); m_messageEmissionQueueTimer = new TQTimer(this); @@ -485,28 +484,12 @@ void TQT_DBusConnectionPrivate::purgeRemovedWatches() void TQT_DBusConnectionPrivate::scheduleDispatch() { - dispatcher->start(0); + dispatcher->start(); } void TQT_DBusConnectionPrivate::dispatch() { - // dbus_connection_dispatch will hang if called recursively - if (inDispatch) { - printf("[dbus-1-tqt] WARNING: Attempt to call dispatch() recursively was silently ignored to prevent lockup!\n\r"); fflush(stdout); - return; - } - inDispatch = true; - - if (mode == ClientMode) - { - if (dbus_connection_dispatch(connection) != DBUS_DISPATCH_DATA_REMAINS) - { - // stop dispatch timer - dispatcher->stop(); - } - } - - inDispatch = false; + TQTimer::singleShot(0, dispatcher, TQ_SLOT(dispatch())); } void TQT_DBusConnectionPrivate::transmitMessageEmissionQueue() |