summaryrefslogtreecommitdiffstats
path: root/src/tqdbusintegrator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tqdbusintegrator.cpp')
-rw-r--r--src/tqdbusintegrator.cpp27
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()