43
43
#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
44
44
#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
46
#define GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW "LoginWindow"
46
48
#define GSM_CONSOLEKIT_GET_PRIVATE(o) \
47
49
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GSM_TYPE_CONSOLEKIT, GsmConsolekitPrivate))
51
53
DBusGConnection *dbus_connection;
52
54
DBusGProxy *bus_proxy;
53
55
DBusGProxy *ck_proxy;
54
guint32 is_connected : 1;
63
REQUEST_COMPLETED = 0,
67
static guint signals[LAST_SIGNAL] = { 0 };
69
58
static void gsm_consolekit_class_init (GsmConsolekitClass *klass);
70
59
static void gsm_consolekit_init (GsmConsolekit *ck);
82
71
const char *new_owner,
83
72
GsmConsolekit *manager);
85
G_DEFINE_TYPE (GsmConsolekit, gsm_consolekit, G_TYPE_OBJECT);
88
gsm_consolekit_get_property (GObject *object,
93
GsmConsolekit *manager = GSM_CONSOLEKIT (object);
96
case PROP_IS_CONNECTED:
97
g_value_set_boolean (value,
98
manager->priv->is_connected);
102
G_OBJECT_WARN_INVALID_PROPERTY_ID (object,
74
static void gsm_consolekit_system_init (GsmSystemInterface *iface);
76
G_DEFINE_TYPE_WITH_CODE (GsmConsolekit, gsm_consolekit, G_TYPE_OBJECT,
77
G_IMPLEMENT_INTERFACE (GSM_TYPE_SYSTEM,
78
gsm_consolekit_system_init))
109
81
gsm_consolekit_class_init (GsmConsolekitClass *manager_class)
111
83
GObjectClass *object_class;
112
GParamSpec *param_spec;
114
85
object_class = G_OBJECT_CLASS (manager_class);
116
87
object_class->finalize = gsm_consolekit_finalize;
117
object_class->get_property = gsm_consolekit_get_property;
119
param_spec = g_param_spec_boolean ("is-connected",
121
"Whether the session is connected to ConsoleKit",
125
g_object_class_install_property (object_class, PROP_IS_CONNECTED,
128
signals [REQUEST_COMPLETED] =
129
g_signal_new ("request-completed",
130
G_OBJECT_CLASS_TYPE (object_class),
132
G_STRUCT_OFFSET (GsmConsolekitClass, request_completed),
135
g_cclosure_marshal_VOID__POINTER,
139
89
g_type_class_add_private (manager_class, sizeof (GsmConsolekitPrivate));
232
182
is_connected = TRUE;
235
if (manager->priv->is_connected != is_connected) {
236
manager->priv->is_connected = is_connected;
237
g_object_notify (G_OBJECT (manager), "is-connected");
240
185
if (!is_connected) {
241
186
if (manager->priv->dbus_connection == NULL) {
242
187
if (manager->priv->bus_proxy != NULL) {
340
gsm_consolekit_error_quark (void)
342
static GQuark error_quark = 0;
344
if (error_quark == 0) {
345
error_quark = g_quark_from_static_string ("gsm-consolekit-error");
352
gsm_consolekit_new (void)
354
GsmConsolekit *manager;
356
manager = g_object_new (GSM_TYPE_CONSOLEKIT, NULL);
362
285
emit_restart_complete (GsmConsolekit *manager,
367
290
call_error = NULL;
369
292
if (error != NULL) {
370
call_error = g_error_new_literal (GSM_CONSOLEKIT_ERROR,
371
GSM_CONSOLEKIT_ERROR_RESTARTING,
293
call_error = g_error_new_literal (GSM_SYSTEM_ERROR,
294
GSM_SYSTEM_ERROR_RESTARTING,
375
g_signal_emit (G_OBJECT (manager),
376
signals [REQUEST_COMPLETED],
298
g_signal_emit_by_name (G_OBJECT (manager),
299
"request_completed", call_error);
379
301
if (call_error != NULL) {
380
302
g_error_free (call_error);
390
312
call_error = NULL;
392
314
if (error != NULL) {
393
call_error = g_error_new_literal (GSM_CONSOLEKIT_ERROR,
394
GSM_CONSOLEKIT_ERROR_STOPPING,
315
call_error = g_error_new_literal (GSM_SYSTEM_ERROR,
316
GSM_SYSTEM_ERROR_STOPPING,
398
g_signal_emit (G_OBJECT (manager),
399
signals [REQUEST_COMPLETED],
320
g_signal_emit_by_name (G_OBJECT (manager),
321
"request_completed", call_error);
402
323
if (call_error != NULL) {
403
324
g_error_free (call_error);
408
gsm_consolekit_attempt_restart (GsmConsolekit *manager)
329
gsm_consolekit_attempt_restart (GsmSystem *system)
331
GsmConsolekit *manager = GSM_CONSOLEKIT (system);
876
gsm_get_consolekit (void)
878
static GsmConsolekit *manager = NULL;
880
if (manager == NULL) {
881
manager = gsm_consolekit_new ();
884
return g_object_ref (manager);
888
gsm_consolekit_is_current_session_login (void)
890
GsmConsolekit *consolekit;
802
gsm_consolekit_is_login_session (GsmSystem *system)
804
GsmConsolekit *consolekit = GSM_CONSOLEKIT (system);
891
805
char *session_type;
894
consolekit = gsm_get_consolekit ();
895
808
session_type = gsm_consolekit_get_current_session_type (consolekit);
897
810
ret = (g_strcmp0 (session_type, GSM_CONSOLEKIT_SESSION_TYPE_LOGIN_WINDOW) == 0);
899
g_object_unref (consolekit);
900
812
g_free (session_type);
818
gsm_consolekit_system_init (GsmSystemInterface *iface)
820
iface->can_switch_user = gsm_consolekit_can_switch_user;
821
iface->can_stop = gsm_consolekit_can_stop;
822
iface->can_restart = gsm_consolekit_can_restart;
823
iface->attempt_stop = gsm_consolekit_attempt_stop;
824
iface->attempt_restart = gsm_consolekit_attempt_restart;
825
iface->set_session_idle = gsm_consolekit_set_session_idle;
826
iface->is_login_session = gsm_consolekit_is_login_session;
830
gsm_consolekit_new (void)
832
GsmConsolekit *manager;
834
manager = g_object_new (GSM_TYPE_CONSOLEKIT, NULL);