diff options
author | Wolf Bergenheim <ext-wolf.2.bergenheim@nokia.com> | 2010-04-14 12:36:12 +0300 |
---|---|---|
committer | Wolf Bergenheim <ext-wolf.2.bergenheim@nokia.com> | 2010-04-14 12:36:12 +0300 |
commit | 7132ae17731747cf98d08dea4d777ad846b3c157 (patch) | |
tree | cbe89846ba416c66e572bba9f159422144b57c28 /libresourceqt | |
parent | 53b8da9ba8c6c08e7cddb193c57b664811c2c29a (diff) | |
download | libresourceqt-7132ae17731747cf98d08dea4d777ad846b3c157.tar.gz |
Fixed libresourceqt to support multiple ResourceSet objects
Diffstat (limited to 'libresourceqt')
-rw-r--r-- | libresourceqt/src/resource-engine.cpp | 45 | ||||
-rw-r--r-- | libresourceqt/src/resource-engine.h | 2 |
2 files changed, 26 insertions, 21 deletions
diff --git a/libresourceqt/src/resource-engine.cpp b/libresourceqt/src/resource-engine.cpp index 02bbabc..929db17 100644 --- a/libresourceqt/src/resource-engine.cpp +++ b/libresourceqt/src/resource-engine.cpp @@ -3,6 +3,8 @@ using namespace ResourcePolicy; +resconn_t *ResourceEngine::libresourceConnection = NULL; + static inline quint32 allResourcesToBitmask(const ResourceSet *resourceSet); static inline quint32 optionalResourcesToBitmask(const ResourceSet *resourceSet); @@ -14,8 +16,7 @@ static void handleAdviceMessage(resmsg_t *msg, resset_t *rs, void *data); ResourceEngine::ResourceEngine(ResourceSet *resourceSet) : QObject(resourceSet), connected(false), resourceSet(resourceSet), - libresourceConnection(NULL), libresourceSet(NULL), - requestId(0), messageMap(), connectionMode(0) + libresourceSet(NULL), requestId(0), messageMap(), connectionMode(0) { if (resourceSet->alwaysGetReply()) { connectionMode += RESMSG_MODE_ALWAYS_REPLY; @@ -38,24 +39,28 @@ bool ResourceEngine::initialize() DBusError dbusError; DBusConnection *dbusConnection; - dbus_error_init(&dbusError); - dbusConnection = dbus_bus_get(DBUS_BUS_SESSION, &dbusError); - if (dbus_error_is_set(&dbusError)) { - qDebug("Error getting the session bus: %s", dbusError.message); + if (ResourceEngine::libresourceConnection == NULL) { + + dbus_error_init(&dbusError); + dbusConnection = dbus_bus_get(DBUS_BUS_SESSION, &dbusError); + if (dbus_error_is_set(&dbusError)) { + qDebug("Error getting the session bus: %s", dbusError.message); + dbus_error_free(&dbusError); + return false; + } dbus_error_free(&dbusError); - return false; - } - dbus_error_free(&dbusError); - DBUSConnectionEventLoop::addConnection(dbusConnection); - libresourceConnection = resproto_init(RESPROTO_ROLE_CLIENT, RESPROTO_TRANSPORT_DBUS, - connectionIsUp, dbusConnection); - if (libresourceConnection == NULL) { - return NULL; + DBUSConnectionEventLoop::addConnection(dbusConnection); + + ResourceEngine::libresourceConnection = resproto_init(RESPROTO_ROLE_CLIENT, RESPROTO_TRANSPORT_DBUS, + connectionIsUp, dbusConnection); + if (ResourceEngine::libresourceConnection == NULL) { + return NULL; + } + resproto_set_handler(ResourceEngine::libresourceConnection, RESMSG_UNREGISTER, handleUnregisterMessage); + resproto_set_handler(ResourceEngine::libresourceConnection, RESMSG_GRANT, handleGrantMessage); + resproto_set_handler(ResourceEngine::libresourceConnection, RESMSG_ADVICE, handleAdviceMessage); } - resproto_set_handler(libresourceConnection, RESMSG_UNREGISTER, handleUnregisterMessage); - resproto_set_handler(libresourceConnection, RESMSG_GRANT, handleGrantMessage); - resproto_set_handler(libresourceConnection, RESMSG_ADVICE, handleAdviceMessage); qDebug("ResourceEngine (%p) is now initialized.", this); return true; } @@ -190,7 +195,7 @@ bool ResourceEngine::connectToManager() resourceMessage.record.mode = connectionMode; qDebug("ResourceEngine is now connecting..."); - libresourceSet = resconn_connect(libresourceConnection, &resourceMessage, + libresourceSet = resconn_connect(ResourceEngine::libresourceConnection, &resourceMessage, statusCallbackHandler); if (libresourceSet == NULL) return false; @@ -470,11 +475,11 @@ static void connectionIsUp(resconn_t *connection) void ResourceEngine::handleConnectionIsUp(resconn_t *connection) { - if(libresourceConnection == connection) + if(ResourceEngine::libresourceConnection == connection) emit connectedToManager(); else { qDebug("ignoring Connection is up, it is not for us (%p != %p)", - libresourceConnection, connection); + ResourceEngine::libresourceConnection, connection); } } diff --git a/libresourceqt/src/resource-engine.h b/libresourceqt/src/resource-engine.h index b01d80f..8c27a45 100644 --- a/libresourceqt/src/resource-engine.h +++ b/libresourceqt/src/resource-engine.h @@ -48,6 +48,7 @@ public: void handleError(quint32 requestNo, qint32 code, const char *message); quint32 id(); + static resconn_t *libresourceConnection; signals: void resourcesBecameAvailable(quint32 bitmaskOfAvailableResources); @@ -63,7 +64,6 @@ private: bool connected; ResourceSet *resourceSet; DBusConnection *dbusConnection; - resconn_t *libresourceConnection; resset_t *libresourceSet; quint32 requestId; QMap<quint32, resmsg_type_t> messageMap; |