2
* Copyright 2013 Canonical Ltd.
5
* Charles Kerr <charles.kerr@canonical.com>
7
* This program is free software: you can redistribute it and/or modify it
8
* under the terms of the GNU General Public License version 3, as published
9
* by the Free Software Foundation.
11
* This program is distributed in the hope that it will be useful, but
12
* WITHOUT ANY WARRANTY; without even the implied warranties of
13
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
14
* PURPOSE. See the GNU General Public License for more details.
16
* You should have received a copy of the GNU General Public License along
17
* with this program. If not, see <http://www.gnu.org/licenses/>.
23
**** indicator_session_util_get_session_proxies()
26
struct session_proxy_data
28
Login1Manager * login1_manager;
29
Login1Seat * login1_seat;
30
DisplayManagerSeat * dm_seat;
31
Accounts * account_manager;
33
GCancellable * cancellable;
36
indicator_session_util_session_proxies_func callback;
42
on_proxy_ready_impl (struct session_proxy_data * data,
49
if (!g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED))
50
g_warning ("%s %s: %s", G_STRLOC, G_STRFUNC, err->message);
56
*((gpointer*)G_STRUCT_MEMBER_P(data, member_offset)) = proxy;
61
data->callback (data->login1_manager,
64
data->account_manager,
68
g_clear_object (&data->login1_manager);
69
g_clear_object (&data->login1_seat);
70
g_clear_object (&data->dm_seat);
71
g_clear_object (&data->account_manager);
72
g_clear_object (&data->cancellable);
78
on_display_manager_seat_proxy_ready (GObject * o G_GNUC_UNUSED,
82
gsize offset = G_STRUCT_OFFSET (struct session_proxy_data, dm_seat);
84
gpointer proxy = display_manager_seat_proxy_new_for_bus_finish (res, &err);
85
on_proxy_ready_impl (gdata, offset, err, proxy);
89
on_login1_seat_ready (GObject * o G_GNUC_UNUSED,
93
gsize offset = G_STRUCT_OFFSET (struct session_proxy_data, login1_seat);
95
gpointer proxy = login1_seat_proxy_new_for_bus_finish (res, &err);
96
on_proxy_ready_impl (gdata, offset, err, proxy);
100
on_login1_manager_ready (GObject * o G_GNUC_UNUSED,
104
gsize offset = G_STRUCT_OFFSET (struct session_proxy_data, login1_manager);
106
gpointer proxy = login1_manager_proxy_new_for_bus_finish (res, &err);
107
on_proxy_ready_impl (gdata, offset, err, proxy);
111
on_accounts_proxy_ready (GObject * o G_GNUC_UNUSED,
115
gsize offset = G_STRUCT_OFFSET (struct session_proxy_data, account_manager);
117
gpointer proxy = accounts_proxy_new_for_bus_finish (res, &err);
118
on_proxy_ready_impl (gdata, offset, err, proxy);
121
/* helper utility to get the dbus proxies used by the backend-dbus classes */
123
indicator_session_util_get_session_proxies (
124
indicator_session_util_session_proxies_func func,
125
GCancellable * cancellable,
128
struct session_proxy_data * data;
131
data = g_new0 (struct session_proxy_data, 1);
132
data->callback = func;
133
data->user_data = user_data;
134
data->cancellable = g_object_ref (cancellable);
138
login1_manager_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
139
G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
140
"org.freedesktop.login1",
141
"/org/freedesktop/login1",
143
on_login1_manager_ready, data);
146
if ((str = g_getenv ("XDG_SEAT")))
150
path = g_strconcat ("/org/freedesktop/login1/seat/", str, NULL);
151
login1_seat_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
152
G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
153
"org.freedesktop.login1",
156
on_login1_seat_ready,
163
accounts_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
164
G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
165
"org.freedesktop.Accounts",
166
"/org/freedesktop/Accounts",
168
on_accounts_proxy_ready, data);
170
/* DisplayManager seat */
171
if ((str = g_getenv ("XDG_SEAT_PATH")))
174
display_manager_seat_proxy_new_for_bus (
176
G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
177
"org.freedesktop.DisplayManager",
180
on_display_manager_seat_proxy_ready, data);