static void set_session_over_handler (GDBusConnection *bus) { g_assert (bus != NULL); watch_for_term_signal (manager); }
static void set_session_over_handler (DBusGConnection *bus, MateSettingsManager *manager) { DBusGProxy *session_proxy; g_assert (bus != NULL); mate_settings_profile_start (NULL); session_proxy = dbus_g_proxy_new_for_name (bus, MATE_SESSION_DBUS_NAME, MATE_SESSION_DBUS_OBJECT, MATE_SESSION_DBUS_INTERFACE); dbus_g_object_register_marshaller ( g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, G_TYPE_INVALID); dbus_g_proxy_add_signal (session_proxy, "SessionOver", G_TYPE_INVALID); dbus_g_proxy_connect_signal (session_proxy, "SessionOver", G_CALLBACK (on_session_over), manager, NULL); watch_for_term_signal (manager); mate_settings_profile_end (NULL); }
static void set_session_over_handler (GDBusConnection *bus) { g_assert (bus != NULL); g_dbus_proxy_new (bus, G_DBUS_PROXY_FLAGS_NONE, NULL, GNOME_SESSION_DBUS_NAME, GNOME_SESSION_DBUS_OBJECT, GNOME_SESSION_DBUS_INTERFACE, NULL, (GAsyncReadyCallback) got_session_proxy, NULL); watch_for_term_signal (manager); }
int main (int argc, char *argv[]) { //bindtextdomain (GETTEXT_PACKAGE, GNOME_SETTINGS_LOCALEDIR); //bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); //textdomain (GETTEXT_PACKAGE); parse_args (&argc, &argv); gdk_set_allowed_backends ("x11"); if (! gdk_init_check (NULL, NULL)) { g_warning ("Unable to initialize GTK+"); exit (EXIT_FAILURE); } g_log_set_default_handler (gsd_log_default_handler, NULL); if (g_strcmp0(g_getenv("XDG_CURRENT_DESKTOP"), "GNOME")) { xsync = g_slice_new0 (MetaXSync); init_xsync(); mainloop = g_main_loop_new (NULL, FALSE); meta_monitor_manager_initialize (replace); meta_idle_monitor_init_dbus (replace); if (!session_manager_connect ()) g_warning ("Unable to connect to session manager"); register_with_gnome_session (sm_proxy); watch_for_term_signal (); g_main_loop_run (mainloop); g_slice_free(MetaXSync, xsync); } g_debug ("DisplayConfig finished"); return 0; }
static void set_session_over_handler (DBusGConnection *bus, MateSettingsManager *manager) { DBusGProxy *session_proxy; DBusGProxy *private_proxy; gchar *client_id = NULL; const char *startup_id; GError *error = NULL; gboolean res; g_assert (bus != NULL); mate_settings_profile_start (NULL); session_proxy = dbus_g_proxy_new_for_name (bus, MATE_SESSION_DBUS_NAME, MATE_SESSION_DBUS_OBJECT, MATE_SESSION_DBUS_INTERFACE); dbus_g_object_register_marshaller ( g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, G_TYPE_INVALID); dbus_g_proxy_add_signal (session_proxy, "SessionOver", G_TYPE_INVALID); dbus_g_proxy_connect_signal (session_proxy, "SessionOver", G_CALLBACK (on_session_over), manager, NULL); /* Register with mate-session */ startup_id = g_getenv ("DESKTOP_AUTOSTART_ID"); if (startup_id != NULL && *startup_id != '\0') { res = dbus_g_proxy_call (session_proxy, "RegisterClient", &error, G_TYPE_STRING, "mate-settings-daemon", G_TYPE_STRING, startup_id, G_TYPE_INVALID, DBUS_TYPE_G_OBJECT_PATH, &client_id, G_TYPE_INVALID); if (!res) { g_warning ("failed to register client '%s': %s", startup_id, error->message); g_error_free (error); } else { /* get org.gnome.SessionManager.ClientPrivate interface */ private_proxy = dbus_g_proxy_new_for_name_owner (bus, MATE_SESSION_DBUS_NAME, client_id, MATE_SESSION_PRIVATE_DBUS_INTERFACE, &error); if (private_proxy == NULL) { g_warning ("DBUS error: %s", error->message); g_error_free (error); } else { /* get QueryEndSession */ dbus_g_proxy_add_signal (private_proxy, "QueryEndSession", G_TYPE_UINT, G_TYPE_INVALID); dbus_g_proxy_connect_signal (private_proxy, "QueryEndSession", G_CALLBACK (on_session_query_end), manager, NULL); /* get EndSession */ dbus_g_proxy_add_signal (private_proxy, "EndSession", G_TYPE_UINT, G_TYPE_INVALID); dbus_g_proxy_connect_signal (private_proxy, "EndSession", G_CALLBACK (on_session_end), manager, NULL); } g_free (client_id); } } watch_for_term_signal (manager); mate_settings_profile_end (NULL); }