summaryrefslogtreecommitdiff
path: root/libresourceqt
diff options
context:
space:
mode:
authorWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-04-14 12:36:12 +0300
committerWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-04-14 12:36:12 +0300
commit7132ae17731747cf98d08dea4d777ad846b3c157 (patch)
treecbe89846ba416c66e572bba9f159422144b57c28 /libresourceqt
parent53b8da9ba8c6c08e7cddb193c57b664811c2c29a (diff)
Fixed libresourceqt to support multiple ResourceSet objects
Diffstat (limited to 'libresourceqt')
-rw-r--r--libresourceqt/src/resource-engine.cpp45
-rw-r--r--libresourceqt/src/resource-engine.h2
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;