On Sat, 2013-03-09 at 02:15 +0100, Yoann LE BARS wrote:
> Hello everybody out there!
> 
>       No, actually, what I have done does not work.
> 
>       I have tried and make my code cleaner, including concerning messages it
> send. To achieve this, I have changed the enumeration this way:
> 
> enum TypeConnexion {FREEDESKTOP, GNOME, NONE};
> 
>       Then, I have changed initialisation of the proxy to this:
> 
> proxy =
>   Gio::DBus::Proxy::create_for_bus_sync(Gio::DBus::BUS_TYPE_SESSION,
>                                   "org.freedesktop.PowerManagement",
>                                   "org/freedesktop/PowerManagement",
>                                  "org.freedesktop.PowerManagement");
> if (proxy) {
>   connectionType = FREEDESKTOP;
> }
> else {
>   std::ostringstream message;
>   message << "No Freedesktop type D-Bus connection available, "
>           << "trying Gnome type.\n";
>   g_message(message.str().c_str());
> 
>   proxy =
>     Gio::DBus::Proxy::create_for_bus_sync(Gio::DBus::BUS_TYPE_SESSION,
>                                           "org.gnome.SessionManager",
>                                           "/org/gnome/SessionManager",
>                                           "org.gnome.SessionManager");
>   if (proxy) {
>     connectionType = GNOME;
>   }
>   else {
>     g_message("No D-Bus connection available.");
>     connectionType = NONE;
>   }
> }
> 
>       Running it on Gnome 3, what I expect is failure while attempting to
> connect to ["org.freedesktop.PowerManagement",
> "org/freedesktop/PowerManagement", "org.freedesktop.PowerManagement"] ,
> then outputting this message:
> 
>       'No Freedesktop type D-Bus connection available, trying Gnome type.'
> 
>       Then, the proxy should connect to ["org.gnome.SessionManager",
> "/org/gnome/SessionManager", "org.gnome.SessionManager"] with success,
> "connectionType" is set to "GNOME" and this is it.
> 
>       Here is the output I get:
> 
> (tutoriel4:8403): GLib-GIO-CRITICAL **:
> g_dbus_connection_signal_subscribe: assertion `object_path == NULL ||
> g_variant_is_object_path (object_path)' failed
> 
> (tutoriel4:8403): GLib-GIO-CRITICAL **:
> g_dbus_connection_signal_subscribe: assertion `object_path == NULL ||
> g_variant_is_object_path (object_path)' failed
> 
> (tutoriel4:8403): GLib-GIO-CRITICAL **:
> g_dbus_connection_call_sync_internal: assertion `object_path != NULL &&
> g_variant_is_object_path (object_path)' failed
> 
> (tutoriel4:8403): GLib-GIO-CRITICAL **:
> g_dbus_connection_call_sync_internal: assertion `object_path != NULL &&
> g_variant_is_object_path (object_path)' failed

These warnings lead me to believe that there is a problem with how the
strings are being passed to the C API.  I'll have to look into it.

> 
>       I have tried and switch into full-screen mode (which implies to inhibit
> screen-saver), then back to windowed mode (which implies to uninhibit
> screen-saver).
> 
>       I expected the first two messages: these are the result of attempting
> to connect to an un-existing bus. But, clearly then the chosen
> alternative is "if (proxy)" and connectionType is set to "FREEDESKTOP".
> As a consequence, it then try and send request in Freedesktop mode,
> which fails (the two last messages).
> 
>       It seems to me that "proxy" is set whether connection succeeded or not.
> This is the reason previously I had to use "if (!proxy)" to obtain the
> desired results, but it was an error.
> 
>       So it is all back to this question: does anyone know a way to determine
> which connection is available?
> 
>       Regards.
> 
>                                                       Yoann
> _______________________________________________
> gtkmm-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/gtkmm-list

-- 
José


-- 
José

_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to