Comment 20 for bug 893851

Revision history for this message
Matt Fischer (mfisch) wrote :

This is still broken in Q as I stated before, although it appears to be fixed in Gnome 3.4 and 3.6 trunks.

Here are all my notes:

1) The signal "Changed" is coming from g-s-d when the brightness hotkeys are pressed:

$ dbus-monitor --session "type='signal',sender='org.gnome.SettingsDaemon'"
In Quantal:
signal sender=:1.6 -> dest=org.gnome.SettingsDaemon serial=397 path=/org/gnome/SettingsDaemon/Power; interface=org.gnome.SettingsDaemon.Power.Screen; member=Changed

On Precise, we see the same signal:
signal sender=:1.17 -> dest=org.gnome.SettingsDaemon serial=8416 path=/org/gnome/SettingsDaemon/Power; interface=org.gnome.SettingsDaemon.Power.Screen; member=Changed

2) I instrumented the on_signal call inside gnome-control-center/panels/sceen/cc-screen-panel.c to emit a g_warning whenever any signal was received, I never saw anything come out in Q. When the same code was used in P, the message was printed. This implies, rather obviously that g-c-c is never getting the signal.

3) I then wrote a simplified test application that attempted to synchronously (for simplicity) connect to the same signal and just print a message if one was received and again, no message was received. I modified this code slightly to listen for signals from Gnome Screensaver and I get signals, so I think my sample code is fine. The sample code is attached later. To run it with the gnome-screensaver and get results, start the code and run "gnome-screensaver-command -a" in another terminal, and you should see:

** (process:17715): WARNING **: we get signal from :1.89: ActiveChanged

If you swap the 3 screensaver related lines with the SettingsDaemon code you will get no output. (replace lines 39-41 with 46-48)

4) I see one more interesting thing that may or may not be a problem:
The signals from SettingsDaemon have a Destination field of the settings daemon itself. Those from Gnome Screensaver have a "null" destination:

signal sender=:1.6 -> dest=org.gnome.SettingsDaemon serial=397 path=/org/gnome/SettingsDaemon/Power; interface=org.gnome.SettingsDaemon.Power.Screen; member=Changed

signal sender=:1.89 -> dest=(null destination) serial=78 path=/org/gnome/ScreenSaver; interface=org.gnome.ScreenSaver; member=ActiveChanged

Perhaps this is a problem? I don't know enough about dbus to be sure.