How to know when D-Bus interfaces and methods are available
David Jarvie
djarvie at kde.org
Thu Aug 6 01:05:14 BST 2009
On Wednesday 05 August 2009 14:38:49 Thiago Macieira wrote:
> Em Quarta-feira 05 Agosto 2009, às 10:25:12, David Jarvie escreveu:
> > Following your
> > advice, that would imply that applications can't use their default D-Bus
> > service for a callable interface, but must instead set up an additional
> > service which they would register later. That might be practical for
> > objects/methods which the application explicitly creates, but what about
> > default ones like com.trolltech.Qt.QWidget?
>
> That's an interface, not an object path. Please don't mix the concepts.
I meant, what about methods under the com.trolltech.Qt.QWidget interface? I've
been trying to use one of its methods in kmail, but have hit exactly the
problem which gave rise to this thread. If the the com.trolltech.Qt.QWidget
interface (under path /kmail/kmail_mainwindow_1) is constructed as soon as
org.kde.kmail service is available, the interface is invalid (isValid() ==
false).
The only obvious ways round this are (a) delay the creation of the app's
default D-Bus service (which, as you have pointed out, is fraught for
KUniqueApplication), (b) introduce QTimer delays, or (c) use Thomas's hack of
creating an extra service once the interfaces are ready. But the last approach
of course relies on the called application providing the extra service - most
apps do not do so currently.
--
David Jarvie.
KDE developer.
KAlarm author and maintainer.
http://www.astrojar.org.uk/kalarm
More information about the kde-core-devel
mailing list