This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Emacs and DBUS


On 8/27/2010 3:41 AM, Michael Albinus wrote:
Ken Brown<kbrown@cornell.edu> writes:

This is also a D-Bus client, which connects to the *same* session bus as
Emacs did due to $DBUS_SESSION_BUS_ADDRESS. Now you should see the
signal sent by dbus-monitor in Emacs.

OK, I started the session bus the right way this time, but I still didn't see any signal from dbus-monitor in Emacs. I assume I should have seen something in the echo area?

Yes. You could test whether both Emacs and dbus-monitor use the same bus by reordering the calls:

- apply dbus-launch as described
- echo $DBUS_SESSION_BUS_ADDRESS
- in *another* shell, set $DBUS_SESSION_BUS_ADDRESS to this value, and
   start dbus-monitor
- start Emacs in the first shell, and load dbus.el. You shall see in
   the other shell output from  dbus-monitor, telling that an application
   has started. It will also tell you the name of that application, like
   ":1.2".

This doesn't happen. Is it possible that dbus.el doesn't complete its initialization because the system bus isn't running? (Keep in mind that I can't do *anything* with dbus in Emacs unless I load dbus.el before starting the system bus.) I note that when I use the version of Emacs built with MYCPPFLAGS='-DDBUS_DEBUG', loading dbus.el results in the following error message in the echo area:


D-Bus error: "Failed to connect to socket /var/run/dbus/system_bus_socket: Interrupted system call"

- apply (dbus-get-unique-name :session) in Emacs. The result shall be
   the same name.
- start dbus-monitor in the same shell as Emacs. In the other
   dbus-monitor, you should be notified, that an application has been started.

Maybe you can compile dbusbind.c with the compiler flag DBUS_DEBUG,
something like this in the Emacs source tree:

# MYCPPFLAGS='-DDBUS_DEBUG' make

This enables test traces sent to Emacs' stdout (the shell where you have
started it). I've introduced this flag while testing dbusbind.c, when it
has blocked Emacs, and I didn't want to start gdb ...

Maybe I can see something suspicious in the traces.

There's very little there. It prints the two lines


   xd_add_watch: fd 8
   xd_add_watch: fd 9

and no more. Does this tell you anything?

It's the initialization phase. Two watch functions are installed on file descriptors 8 and 9 (connected to the system and session buses), polling for incoming messages in Emacs' mainloop.

When you call dbus-get-unique-name, there shall be more output. But this
works, as you have confirmed, so this is not the interesting case.

I've hoped to see more :-( Did you play with the running/non-running
system bus?

Yes, the traces above were produced when starting Emacs with the system bus running. I'm stuck at that point and can't do anything to produce more traces.


Ken

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]