On Wed, Jan 28, 2015 at 11:12 AM, Pavel Grunt <pgrunt@xxxxxxxxxx> wrote: > It avoids calling D-Bus methods when the bus name > "org.gnome.SessionManager" does not exist. > > GSpice-WARNING **: Error calling 'org.gnome.SessionManager.Inhibit': GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files > --- > The warning appears in other than Gnome desktop environment Since it is required to prevent automount from racing with auto-usb redirection, I would say that a warning is ok. What desktop are you using? If you reach that error, it means there was a org.gnome.SessionManager. Maybe we should have a build option like --with-desktop=none ? > --- > gtk/desktop-integration.c | 63 +++++++++++++++++++++++++++++++++-------------- > 1 file changed, 45 insertions(+), 18 deletions(-) > > diff --git a/gtk/desktop-integration.c b/gtk/desktop-integration.c > index c366fd0..bf6a9e3 100644 > --- a/gtk/desktop-integration.c > +++ b/gtk/desktop-integration.c > @@ -44,6 +44,7 @@ struct _SpiceDesktopIntegrationPrivate { > GObject *gnome_session_proxy; /* dummy */ > #endif > guint gnome_automount_inhibit_cookie; > + guint gdbus_watcher_id; > }; > > G_DEFINE_TYPE(SpiceDesktopIntegration, spice_desktop_integration, G_TYPE_OBJECT); > @@ -60,33 +61,57 @@ static void handle_dbus_call_error(const char *call, GError **_error) > g_clear_error(_error); > } > > -static gboolean gnome_integration_init(SpiceDesktopIntegration *self) > +#if defined(USE_GDBUS) > +static void name_appeared_cb(GDBusConnection *connection, > + const gchar *name, > + const gchar *name_owner G_GNUC_UNUSED, > + gpointer data) > { > - G_GNUC_UNUSED SpiceDesktopIntegrationPrivate *priv = self->priv; > + SpiceDesktopIntegration *self = SPICE_DESKTOP_INTEGRATION(data); > + SpiceDesktopIntegrationPrivate *priv = self->priv; > GError *error = NULL; > - gboolean success = TRUE; > - > -#if defined(USE_GDBUS) > - priv->gnome_session_proxy = > - g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION, > - G_DBUS_PROXY_FLAGS_NONE, > - NULL, > - "org.gnome.SessionManager", > - "/org/gnome/SessionManager", > - "org.gnome.SessionManager", > - NULL, > - &error); > -#else > - success = FALSE; > -#endif > > + priv->gnome_session_proxy = g_dbus_proxy_new_sync(connection, > + G_DBUS_PROXY_FLAGS_NONE, > + NULL, > + name, > + "/org/gnome/SessionManager", > + "org.gnome.SessionManager", > + NULL, > + &error); > if (error) { > g_warning("Could not create org.gnome.SessionManager dbus proxy: %s", > error->message); > g_clear_error(&error); > - return FALSE; > } > +} > + > +static void name_vanished_cb(GDBusConnection *connection G_GNUC_UNUSED, > + const gchar *name G_GNUC_UNUSED, > + gpointer data) > +{ > + SpiceDesktopIntegration *self = SPICE_DESKTOP_INTEGRATION(data); > + SpiceDesktopIntegrationPrivate *priv = self->priv; > + > + g_clear_object(&priv->gnome_session_proxy); > +} > +#endif > > +static gboolean gnome_integration_init(SpiceDesktopIntegration *self) > +{ > + G_GNUC_UNUSED SpiceDesktopIntegrationPrivate *priv = self->priv; > + gboolean success = FALSE; > + > +#if defined(USE_GDBUS) > + priv->gdbus_watcher_id = g_bus_watch_name(G_BUS_TYPE_SESSION, > + "org.gnome.SessionManager", > + G_BUS_NAME_WATCHER_FLAGS_NONE, > + name_appeared_cb, > + name_vanished_cb, > + self, > + NULL); > + success = TRUE; > +#endif > return success; > } > > @@ -150,6 +175,8 @@ static void gnome_integration_dispose(SpiceDesktopIntegration *self) > { > SpiceDesktopIntegrationPrivate *priv = self->priv; > > + if (priv->gdbus_watcher_id) > + g_bus_unwatch_name(priv->gdbus_watcher_id); Dispose may be run multiple times, so you should clear priv->gdbus_watcher_id too. > g_clear_object(&priv->gnome_session_proxy); > } > > -- > 1.9.3 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/spice-devel thanks -- Marc-André Lureau _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel