From 0c99abad29c5c93ac607763c391a986f288e151d Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Tue, 12 Feb 2013 10:18:27 +0100 Subject: [PATCH] PIM testing: D-Bus methods thread-safe The test must be activated by compiling manager.cpp with PIM_MANAGER_TEST_THREADING and then runs start() in a new thread which gets created during startup. --- src/dbus/server/pim/manager.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/dbus/server/pim/manager.cpp b/src/dbus/server/pim/manager.cpp index 122ad2ec..9e50165e 100644 --- a/src/dbus/server/pim/manager.cpp +++ b/src/dbus/server/pim/manager.cpp @@ -92,6 +92,15 @@ Manager::~Manager() } } +#ifdef PIM_MANAGER_TEST_THREADING +static gpointer StartManager(gpointer data) +{ + Manager *manager = static_cast(data); + manager->start(); + return NULL; +} +#endif + void Manager::init() { // Restore sort order and active databases. @@ -139,6 +148,13 @@ void Manager::init() // We don't care about the result. GDBusCXX::DBusConnectionPtr(getConnection()).ownNameAsync(MANAGER_SERVICE, boost::function()); + +#ifdef PIM_MANAGER_TEST_THREADING + GThread *thread = g_thread_new("start", + StartManager, + this); + g_thread_unref(thread); +#endif } struct TaskForMain