/* * Copyright 2013 Canonical Ltd. * * Authors: * Charles Kerr * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #include "actions.h" #include "backend-dbus.h" #include "guest.h" #include "users.h" #include "utils.h" struct dbus_world_data { GCancellable * cancellable; IndicatorSessionActionsDbus * actions; IndicatorSessionUsersDbus * users; IndicatorSessionGuestDbus * guest; }; static void on_proxies_ready (ConsoleKitManager * ck_manager, Accounts * account_manager, DisplayManagerSeat * dm_seat, ConsoleKitSeat * ck_seat, ConsoleKitSession * ck_session, AccountsUser * active_user G_GNUC_UNUSED, const GError * error, gpointer gdata) { struct dbus_world_data * data = gdata; if (error == NULL) { if (data->actions != NULL) indicator_session_actions_dbus_set_proxies (data->actions, ck_manager, dm_seat, ck_seat); if (data->users != NULL) indicator_session_users_dbus_set_proxies (data->users, account_manager, dm_seat, ck_seat); if (data->guest != NULL) indicator_session_guest_dbus_set_proxies (data->guest, account_manager, dm_seat, ck_seat, ck_session); } g_free (data); } /*** **** ***/ void backend_get (GCancellable * cancellable, IndicatorSessionActions ** setme_actions, IndicatorSessionUsers ** setme_users, IndicatorSessionGuest ** setme_guest) { struct dbus_world_data * data; data = g_new0 (struct dbus_world_data, 1); if (setme_actions != NULL) { IndicatorSessionActions * actions; actions = indicator_session_actions_dbus_new (); data->actions = INDICATOR_SESSION_ACTIONS_DBUS (actions); *setme_actions = actions; } if (setme_users != NULL) { IndicatorSessionUsers * users; users = indicator_session_users_dbus_new (); data->users = INDICATOR_SESSION_USERS_DBUS (users); *setme_users = users; } if (setme_guest != NULL) { IndicatorSessionGuest * guest; guest = indicator_session_guest_dbus_new (); data->guest = INDICATOR_SESSION_GUEST_DBUS (guest); *setme_guest = guest; } data->cancellable = g_object_ref (cancellable); indicator_session_util_get_session_proxies (on_proxies_ready, data->cancellable, data); }