diff options
-rw-r--r-- | libresourceqt/include/qt4/policy/resource-set.h | 2 | ||||
-rw-r--r-- | libresourceqt/src/resource-set.cpp | 59 | ||||
-rw-r--r-- | resourceqt-client/client.cpp | 26 |
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(); |