summaryrefslogtreecommitdiff
path: root/libresourceqt/src/resource-set.cpp
diff options
context:
space:
mode:
authorWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-04-27 09:42:03 +0300
committerWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-04-27 09:42:03 +0300
commitee5ed8f33d6060c9eb041cacb54f31c2cb1da067 (patch)
treebf06a93541eed2751d34c3616e2432b88933df43 /libresourceqt/src/resource-set.cpp
parent3a5be2e8aff1c1bdd6406904307a7b3b7a062d38 (diff)
Added mutexes to make all libresourceqt usage atomic
Diffstat (limited to 'libresourceqt/src/resource-set.cpp')
-rw-r--r--libresourceqt/src/resource-set.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/libresourceqt/src/resource-set.cpp b/libresourceqt/src/resource-set.cpp
index d28eb79..b15e556 100644
--- a/libresourceqt/src/resource-set.cpp
+++ b/libresourceqt/src/resource-set.cpp
@@ -2,6 +2,7 @@
#include "resource-engine.h"
using namespace ResourcePolicy;
+static quint32 resourceSetId=1;
ResourceSet::ResourceSet(const QString &applicationClass, QObject * parent)
: QObject(parent), resourceClass(applicationClass), resourceEngine(NULL),
@@ -9,20 +10,22 @@ ResourceSet::ResourceSet(const QString &applicationClass, QObject * parent)
initialized(false), pendingAcquire(false), pendingUpdate(false),
pendingAudioProperties(false)
{
- identifier = (quint32)this;
+ identifier = resourceSetId++;
memset(resourceSet, 0, sizeof(QPointer<Resource *>)*NumberOfTypes);
}
ResourceSet::~ResourceSet()
{
+ qDebug("ResourceSet::%s(%d)", __FUNCTION__, identifier);
for (int i = 0;i < NumberOfTypes;i++) {
delete resourceSet[i];
}
if(resourceEngine != NULL) {
+ qDebug("ResourceSet::%s(%d) - resourceEngine->disconnectFromManager()", __FUNCTION__, identifier);
resourceEngine->disconnect(this);
resourceEngine->disconnectFromManager();
- delete resourceEngine;
}
+ qDebug("ResourceSet::%s(%d) - deleted!", __FUNCTION__, identifier);
}
bool ResourceSet::initialize()
@@ -43,24 +46,30 @@ bool ResourceSet::initialize()
this, SLOT(handleResourcesLost(quint32)));
QObject::connect(resourceEngine, SIGNAL(resourcesBecameAvailable(quint32)),
this, SLOT(handleResourcesBecameAvailable(quint32)));
+ qDebug("initializing resource engine...");
if (!resourceEngine->initialize()) {
return false;
}
+ qDebug("resourceEngine->initialize() returned true");
if (!resourceEngine->connectToManager()) {
return false;
}
qDebug("ResourceSet is initialized engine=%p", resourceEngine);
initialized = true;
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
return true;
}
void ResourceSet::addResourceObject(Resource *resource)
{
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
if(resource == NULL)
return;
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
delete resourceSet[resource->type()];
resourceSet[resource->type()] = resource;
- if (resource->type() == AudioPlaybackType) {
+ if ((resource->type() == AudioPlaybackType)) {
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
audioResource = static_cast<AudioResource *>(resource);
QObject::connect(audioResource,
SIGNAL(audioPropertiesChanged(const QString &, quint32,
@@ -68,12 +77,15 @@ void ResourceSet::addResourceObject(Resource *resource)
this,
SLOT(handleAudioPropertiesChanged(const QString &, quint32,
const QString &, const QString &)));
- if(audioResource->streamTagIsSet() || audioResource->audioGroupIsSet() ||
- (audioResource->processID() > 0))
+ if(audioResource->streamTagIsSet() && (audioResource->processID() > 0))
{
qDebug("registering audio properties");
registerAudioProperties();
}
+ else if (audioResource->audioGroupIsSet()) {
+ qDebug("ResourceSet::%s().... %d registering audio proprerties later", __FUNCTION__, __LINE__);
+ pendingAudioProperties = true;
+ }
}
}
@@ -181,16 +193,19 @@ Resource * ResourceSet::resource(ResourceType type) const
bool ResourceSet::acquire()
{
if (!initialized) {
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
pendingAcquire = true;
return initialize();
}
if (!resourceEngine->isConnectedToManager()) {
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
pendingAcquire = true;
resourceEngine->connectToManager();
return true;
}
else {
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
return resourceEngine->acquireResources();
}
}
@@ -250,6 +265,7 @@ bool ResourceSet::alwaysGetReply()
void ResourceSet::connectedHandler()
{
+ qDebug("**************** ResourceSet::%s().... %d", __FUNCTION__, __LINE__);
qDebug("Connected to manager!");
if (pendingAudioProperties) {
registerAudioProperties();