From fdb67c341fcb9ea0ae29a7889227ded6ac66a362 Mon Sep 17 00:00:00 2001 From: Wolf Bergenheim Date: Wed, 17 Feb 2010 15:23:29 +0200 Subject: Implemented modes => we now get deny messages --- libresourceqt/src/resource-engine.cpp | 25 +++++++++++++++---------- libresourceqt/src/resource-engine.h | 4 +--- libresourceqt/src/resource-set.cpp | 20 ++++++++++++++++++-- 3 files changed, 34 insertions(+), 15 deletions(-) (limited to 'libresourceqt/src') diff --git a/libresourceqt/src/resource-engine.cpp b/libresourceqt/src/resource-engine.cpp index 2704235..5c02b44 100644 --- a/libresourceqt/src/resource-engine.cpp +++ b/libresourceqt/src/resource-engine.cpp @@ -15,8 +15,15 @@ static void handleAdviceMessage(resmsg_t *msg, resset_t *rs, void *data); ResourceEngine::ResourceEngine(ResourceSet *resourceSet) : QObject(resourceSet), connected(false), resourceSet(resourceSet), dbusEngine(NULL), libresourceConnection(NULL), libresourceSet(NULL), - requestId(0), messageMap(), mode(0) + requestId(0), messageMap(), connectionMode(0) { + if (resourceSet->alwaysGetReply()) { + connectionMode += RESMSG_MODE_ALWAYS_REPLY; + } + if (resourceSet->willAutoRelease()) { + connectionMode += RESOURCE_AUTO_RELEASE; + } + qDebug("connectionMode = %04x", connectionMode); } ResourceEngine::~ResourceEngine() @@ -160,12 +167,12 @@ bool ResourceEngine::connectToManager() resourceMessage.record.rset.all = allResources; resourceMessage.record.rset.opt = optionalResources; resourceMessage.record.rset.share = 0; - resourceMessage.record.rset.mask = 0; + resourceMessage.record.rset.mask = connectionMode; QByteArray ba = resourceSet->applicationClass().toLatin1(); resourceMessage.record.klass = ba.data(); - resourceMessage.record.mode = mode; + resourceMessage.record.mode = connectionMode; qDebug("ResourceEngine is now connecting..."); libresourceSet = resconn_connect(libresourceConnection, &resourceMessage, @@ -365,7 +372,7 @@ bool ResourceEngine::updateResources() message.record.rset.all = allResources; message.record.rset.opt = optionalResources; message.record.rset.share = 0; - message.record.rset.mask = 0; + message.record.rset.mask = connectionMode; QByteArray ba = resourceSet->applicationClass().toLatin1(); message.record.klass = ba.data(); @@ -393,10 +400,13 @@ bool ResourceEngine::registerAudioStreamTag(const QString &) bool ResourceEngine::registerAudioGroup(const QString &audioGroup) { + if((audioGroup == "") || (audioGroup == QString())) + return false; + resmsg_t message; memset(&message, 0, sizeof(resmsg_t)); - QByteArray ba = resourceSet->applicationClass().toLatin1(); + QByteArray ba = audioGroup.toLatin1(); message.audio.group = ba.data(); message.audio.type = RESMSG_AUDIO; @@ -441,8 +451,3 @@ void ResourceEngine::handleConnectionIsUp() emit connectedToManager(); } -void ResourceEngine::setMode(quint32 newMode) -{ - mode = newMode; -} - diff --git a/libresourceqt/src/resource-engine.h b/libresourceqt/src/resource-engine.h index c966144..b1fec70 100644 --- a/libresourceqt/src/resource-engine.h +++ b/libresourceqt/src/resource-engine.h @@ -48,8 +48,6 @@ public: void handleStatusMessage(quint32 requestNo); void handleError(quint32 requestNo, qint32 code, const char *message); - void setMode(quint32 newMode); - signals: void resourcesBecameAvailable(quint32 bitmaskOfAvailableResources); void resourcesGranted(quint32 bitmaskOfGrantedResources); @@ -69,7 +67,7 @@ private: resset_t *libresourceSet; quint32 requestId; QMap messageMap; - quint32 mode; + quint32 connectionMode; }; } diff --git a/libresourceqt/src/resource-set.cpp b/libresourceqt/src/resource-set.cpp index 3652939..bbb8d6e 100644 --- a/libresourceqt/src/resource-set.cpp +++ b/libresourceqt/src/resource-set.cpp @@ -174,14 +174,30 @@ QString ResourceSet::applicationClass() return this->resourceClass; } -void ResourceSet::setAutoRelease() +bool ResourceSet::setAutoRelease() { + if(initialized) + return false; autoRelease = true; + return true; +} + +bool ResourceSet::willAutoRelease() +{ + return autoRelease; } -void ResourceSet::setAlwaysReply() +bool ResourceSet::setAlwaysReply() { + if(initialized) + return false; alwaysReply = true; + return true; +} + +bool ResourceSet::alwaysGetReply() +{ + return alwaysReply; } void ResourceSet::connectedHandler() -- cgit v1.2.3