QT and dbus - no such signal

Christian Rüb christian.rueb at gmx.net
Sun Jan 10 15:52:15 CET 2010


> [...]
> > Thanks for this. Where exactly did you change it? I grepped 'Os' and 'O2' in openembedded/recipes/qt4/* but found neither.
> > -O seems no to be set in CFLAGS under qt4/
> 
> I do not know if this is the right way, just digged in bitbake sources
> and added to local.conf the line:
> 
> FULL_OPTIMIZATION_pn-qt4-x11-free = "-fexpensive-optimizations
> -fomit-frame-pointer -frename-registers -O2"
> 
>       Niko

Hi Niko!

Thanks a lot, that did it! I wonder why it is not integrated by default though.

...definition and registration of FSOResourceStatus struct ...

I also try to connect to the ResourceChanged signal from ousaged which has a more complex signature and it reports that signal would not exist.
I use the following code to display all signals/methods on ousaged interface:
	usageInterface = new QDBusInterface("org.freesmartphone.ousaged", "/org/freesmartphone/Usage", "org.freesmartphone.Usage", QDBusConnection::systemBus(), this);
	if(usageInterface->isValid()) {
		const QMetaObject* metaObject = usageInterface->metaObject();
		qDebug() << "\norg.freesmartphone.Usage methods:";
		for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i)
			qDebug() << QString::fromLatin1(metaObject->method(i).signature()) << "[" << (metaObject->method(i).methodType()==1?"signal":"method") << "]";
		connect(usageInterface, SIGNAL(ResourceChanged(FSOResourceStatus)), this, SLOT(handleStatusChange(FSOResourceStatus)));
	}

output is:

org.freesmartphone.Usage methods:
"GetResourcePolicy(QString)" [ method ]
"GetResourceState(QString)" [ method ]
"GetResourceUsers(QString)" [ method ]
"ListResources()" [ method ]
"Reboot()" [ method ]
"RegisterResource(QString,QDBusObjectPath)" [ method ]
"ReleaseResource(QString)" [ method ]
"RequestResource(QString)" [ method ]
"ResourceAvailable(QString,bool)" [ signal ]
"SetResourcePolicy(QString,QString)" [ method ]
"Shutdown()" [ method ]
"Suspend()" [ method ]
"SystemAction(QString)" [ signal ]
"UnregisterResource(QString)" [ method ]
"initResources()" [ method ]
Object::connect: No such signal org::freesmartphone::Usage::ResourceChanged(FSOResourceStatus)

As you can see, the ResourceChanged signal is not listed (neither on my FR nor on my PC), but with qdbusviewer I can connect to it and receive the signal:

Received signal from :1.17, path /org/freesmartphone/Usage, interface org.freesmartphone.Usage, member ResourceChanged
  Arguments: "GPS", true, [Argument: a{sv} {"policy" = [Variant(QString): "auto"], "refcount" = [Variant(int): 1]}]

Any ideas how I can investigate further?

Thanks.

Christian



More information about the community mailing list