Emacs and DBUS
Fri Aug 27 06:09:00 GMT 2010
On 8/26/2010 4:16 PM, Michael Albinus wrote:
> Ken Brown writes:
>>> I'm confused: do you mean, the problem is happening when the system bus
>>> is running, or when it is *not* running? I suspect the latter case.
>> I really meant it the way I said it: The problem occurs if the system
>> bus *is* running. I've done some further testing, and here are the
>> results, all with a build of emacs from the trunk, starting in the
>> emacs src directory.
>> 1. With the system bus not running, I start Emacs via 'dbus-launch
>> ./emacs.exe -Q&' and load dbus.el. In the *scratch* buffer I evaluate
>> some of the expressions that you suggested in your earlier email:
>> (dbus-get-unique-name :session)
>> (defun my-dbus-signal-handler (&rest args)
>> (message "Signal from bus %s received: %s"
>> (dbus-event-bus-name last-input-event) args))
>> :session dbus-service-dbus dbus-path-dbus dbus-interface-dbus
>> "NameOwnerChanged" 'my-dbus-signal-handler)
>> ((:session "org.freedesktop.DBus" "NameOwnerChanged")
>> ("org.freedesktop.DBus" "/org/freedesktop/DBus"
>> Now I try 'dbus-monitor --session' in the xterm window from which I
>> started emacs. This produces output in the xterm window, but I don't
>> see anything in Emacs.
> No surprise. You have started an own session bus for Emacs, which is not
> known to dbus-monitor. You shall do
> # eval `dbus-launch --auto-syntax`
> dbus-launch returns some environment variables to be set, which is done
> by the eval command. The most interesting one is $DBUS_SESSION_BUS_ADDRESS
> # emacs&
> Emacs will find the session bus via $DBUS_SESSION_BUS_ADDRESS. Load
> dbus.el, and eval the expressions as suggested.
> # dbus-monitor --session
> 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?
>> 2. With the system bus running, I start Emacs as above and load
>> dbus.el. The cursor stops blinking, and Emacs becomes unresponsive. I
>> can type C-g and hear a bell, and I can type C-x C-c to exit, but I
>> can't get a response to any other key presses.
> That I need to debug. Hmm, no system available next days.
> 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?
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin