summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-03-25 13:21:04 +0200
committerWolf Bergenheim <ext-wolf.2.bergenheim@nokia.com>2010-03-25 13:21:04 +0200
commit77b9a734387dcddea4097a61e1cd19fcd60bd452 (patch)
tree6a37d69514b0ed2fff763c7760ac5c8ae3b493d7
parent6edecafaa7e81a625bc799d1513790af456ea302 (diff)
Changed so that audio information is sent as soon as it is set.
-rw-r--r--libresourceqt/include/qt4/policy/resource-set.h2
-rw-r--r--libresourceqt/src/resource-set.cpp59
-rw-r--r--resourceqt-client/client.cpp26
3 files changed, 63 insertions, 24 deletions
diff --git a/libresourceqt/include/qt4/policy/resource-set.h b/libresourceqt/include/qt4/policy/resource-set.h
index 0d72cb7..59088e3 100644
--- a/libresourceqt/include/qt4/policy/resource-set.h
+++ b/libresourceqt/include/qt4/policy/resource-set.h
@@ -243,6 +243,8 @@ private:
bool pendingUpdate;
bool pendingAudioProperties;
+ void registerAudioProperties();
+
private slots:
void connectedHandler();
void handleGranted(quint32);
diff --git a/libresourceqt/src/resource-set.cpp b/libresourceqt/src/resource-set.cpp
index e45cb1c..af0a6fc 100644
--- a/libresourceqt/src/resource-set.cpp
+++ b/libresourceqt/src/resource-set.cpp
@@ -59,7 +59,6 @@ void ResourceSet::addResourceObject(Resource *resource)
if(resource == NULL)
return;
if (resource->type() == AudioPlaybackType) {
- qDebug("audioResource... %p", resource);
audioResource = static_cast<AudioResource *>(resource);
QObject::connect(audioResource,
SIGNAL(audioPropertiesChanged(const QString &, quint32,
@@ -70,7 +69,8 @@ void ResourceSet::addResourceObject(Resource *resource)
if(audioResource->streamTagIsSet() || audioResource->audioGroupIsSet() ||
(audioResource->processID() > 0))
{
- pendingAudioProperties = true;
+ qDebug("registering audio properties");
+ registerAudioProperties();
}
}
delete resourceSet[resource->type()];
@@ -250,16 +250,9 @@ bool ResourceSet::alwaysGetReply()
void ResourceSet::connectedHandler()
{
+ qDebug("Connected to manager!");
if (pendingAudioProperties) {
- qDebug() << "registering audio group: " << audioResource->audioGroup();
- qDebug() << "registering PID: " << audioResource->processID();
- qDebug() << "registering audio stream: " << audioResource->streamTagName()
- << ":" << audioResource->streamTagValue();
- resourceEngine->registerAudioProperties(audioResource->audioGroup(),
- audioResource->processID(),
- audioResource->streamTagName(),
- audioResource->streamTagValue());
- pendingAudioProperties = false;
+ registerAudioProperties();
}
if (pendingUpdate) {
resourceEngine->updateResources();
@@ -271,6 +264,35 @@ void ResourceSet::connectedHandler()
}
}
+void ResourceSet::registerAudioProperties()
+{
+ if (!initialized) {
+ qDebug("%s(): initializing...", __FUNCTION__);
+ pendingAudioProperties = true;
+ initialize();
+ }
+ else if (!resourceEngine->isConnectedToManager()) {
+ qDebug("%s(): Connecting to Manager...", __FUNCTION__);
+ pendingAudioProperties = true;
+ resourceEngine->connectToManager();
+ }
+ else {
+ qDebug("Registering new audio settings:");
+ qDebug() << "\taudio group: " << audioResource->audioGroup();
+ qDebug() << "\tPID: " << audioResource->processID();
+ qDebug() << "\taudio stream: " << audioResource->streamTagName()
+ << ":" << audioResource->streamTagValue();
+ if((audioResource->processID() > 0) && audioResource->streamTagName() != "media.name") {
+ qWarning() << "streamTagName should be 'media.name' it is '" << audioResource->streamTagName() << "'";
+ }
+ resourceEngine->registerAudioProperties(audioResource->audioGroup(),
+ audioResource->processID(),
+ audioResource->streamTagName(),
+ audioResource->streamTagValue());
+ pendingAudioProperties = false;
+ }
+}
+
void ResourceSet::handleGranted(quint32 bitmaskOfGrantedResources)
{
qDebug("in %s",__FUNCTION__);
@@ -341,17 +363,8 @@ void ResourceSet::handleResourcesBecameAvailable(quint32 availableResources)
emit resourcesBecameAvailable(listOfResources);
}
-void ResourceSet::handleAudioPropertiesChanged(const QString &group, quint32 pid,
- const QString &name, const QString &value)
+void ResourceSet::handleAudioPropertiesChanged(const QString &, quint32,
+ const QString &, const QString &)
{
- qDebug() << "Audio group is: " << group;
- qDebug("Audio renderer PID = %u", pid);
- if (initialized && resourceEngine->isConnectedToManager()) {
- qDebug("registering new audio settings");
- resourceEngine->registerAudioProperties(group, pid, name, value);
- }
- else {
- qDebug("registering new audio group LATER");
- pendingAudioProperties = true;
- }
+ registerAudioProperties();
}
diff --git a/resourceqt-client/client.cpp b/resourceqt-client/client.cpp
index 968810e..078e6e4 100644
--- a/resourceqt-client/client.cpp
+++ b/resourceqt-client/client.cpp
@@ -356,7 +356,8 @@ void Client::timerEvent(QTimerEvent*)
printf("\t update\tupdate modified resource set after add or remove command\n");
printf("\t add reslist [-o]\tadd reosurce list, if -o provided, set as optional\n");
printf("\t remove reslist [-o]\tremove reosurce list, if -o provided, removed only optional flag\n");
- printf("\t audio pid <pid> | group <audio group> | tag <name> <value>\tset audio properties");
+ printf("\t audio pid <pid> | group <audio group> | tag <name> <value>\tset audio properties\n");
+ printf("\t addaudio <audio group> <pid> <tag name> <tag value>\n");
printf("\t show \tshow resources\n");
}
else if (params[0] == "show") {
@@ -463,6 +464,29 @@ void Client::timerEvent(QTimerEvent*)
}
}
}
+ else if (params[0] == "addaudio") {
+ if (params.count() < 5) {
+ printf("Not enough parameters! See help!\n");
+ }
+ else {
+ AudioResource *audioResource = new AudioResource(params[1]);
+ if (audioResource == NULL) {
+ printf("Failed to create an AudioResource object!\n");
+ }
+ else {
+ bool ok=false;
+ quint32 pid = (quint32)params[2].toInt(&ok, 10);
+ if (ok && pid != 0) {
+ audioResource->setProcessID(pid);
+ }
+ else {
+ printf("Bad pid parameter!\n");
+ }
+ audioResource->setStreamTag(params[3], params[4]);
+ resourceSet->addResourceObject(audioResource);
+ }
+ }
+ }
else if (!params[0].isEmpty()) {
QByteArray ba = line.toLatin1();
const char *c_line = ba.data();