summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesús González <jgonzalez@gdr-sistemas.com>2014-12-16 23:48:40 +0100
committerJesús González <jgonzalez@gdr-sistemas.com>2014-12-16 23:48:40 +0100
commit46dd1a9e5afcb910c875ec47c481aeaf63c3dcf3 (patch)
tree10efbf5820a71995b203392e0c9331619ba79c12 /src
parent3025f6644277ef9ab3fe00940dc8c06bb76ce8b7 (diff)
parent312a7bb6d43129b542ae75d93ba188f16a9546e7 (diff)
downloadlightdm-46dd1a9e5afcb910c875ec47c481aeaf63c3dcf3.tar.gz
Merged changes from parent branch
Diffstat (limited to 'src')
-rw-r--r--src/lightdm.c4
-rw-r--r--src/login1.c96
2 files changed, 31 insertions, 69 deletions
diff --git a/src/lightdm.c b/src/lightdm.c
index 57a0efc7..4e8545bf 100644
--- a/src/lightdm.c
+++ b/src/lightdm.c
@@ -1094,9 +1094,7 @@ static gboolean
login1_add_seat (Login1Seat *login1_seat)
{
if (config_get_boolean (config_get_instance (), "LightDM", "logind-check-graphical"))
- {
g_signal_connect (login1_seat, "can-graphical-changed", G_CALLBACK (login1_can_graphical_changed_cb), NULL);
- }
g_signal_connect (login1_seat, LOGIN1_SIGNAL_ACTIVE_SESION_CHANGED, G_CALLBACK (login1_active_session_changed_cb), NULL);
@@ -1468,9 +1466,7 @@ main (int argc, char **argv)
{
Login1Seat *login1_seat = link->data;
if (!login1_add_seat (login1_seat))
- {
return EXIT_FAILURE;
- }
}
}
}
diff --git a/src/login1.c b/src/login1.c
index a932cbbc..b37ebd80 100644
--- a/src/login1.c
+++ b/src/login1.c
@@ -18,9 +18,6 @@
#define LOGIN1_SERVICE_NAME "org.freedesktop.login1"
#define LOGIN1_OBJECT_NAME "/org/freedesktop/login1"
#define LOGIN1_MANAGER_INTERFACE_NAME "org.freedesktop.login1.Manager"
-#define DBUS_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
-#define DBUS_PROPERTIES_GET_METHOD "Get"
-#define LOGIN1_SEAT_INTERFACE "org.freedesktop.login1.Seat"
enum {
SEAT_ADDED,
@@ -85,32 +82,6 @@ login1_service_get_instance (void)
return singleton;
}
-static GVariant *
-get_property_from_dbus (GDBusConnection *connection,
- Login1Seat *seat,
- const gchar *property_name)
-{
- GVariant *result;
- GError *error = NULL;
-
- result = g_dbus_connection_call_sync (connection,
- LOGIN1_SERVICE_NAME,
- seat->priv->path,
- DBUS_PROPERTIES_INTERFACE,
- DBUS_PROPERTIES_GET_METHOD,
- g_variant_new ("(ss)", LOGIN1_SEAT_INTERFACE, property_name),
- G_VARIANT_TYPE ("(v)"),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- NULL,
- &error);
- if (error)
- g_warning ("Error updating %s: %s", property_name, error->message);
- g_clear_error (&error);
-
- return result;
-}
-
static void
update_property (Login1Seat *seat, const gchar *name, GVariant *value)
{
@@ -119,25 +90,11 @@ update_property (Login1Seat *seat, const gchar *name, GVariant *value)
seat->priv->can_graphical = g_variant_get_boolean (value);
g_signal_emit (seat, seat_signals[CAN_GRAPHICAL_CHANGED], 0);
}
- else if (strcmp (name, "ActiveSession") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_TUPLE))
+ else if (strcmp (name, "ActiveSession") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE ("(so)")))
{
- GVariant *value2;
-
- // value should be of type (so)
- value2 = g_variant_get_child_value (value, 0);
- if (value2)
- {
- const gchar *login1_session_id;
-
- login1_session_id = g_variant_get_string (value2, NULL);
-
- if (login1_session_id)
- {
- g_signal_emit (seat, seat_signals[ACTIVE_SESSION_CHANGED], 0, login1_session_id);
- }
-
- g_variant_unref (value2);
- }
+ const gchar *login1_session_id;
+ g_variant_get (value, "(&so)", &login1_session_id, NULL);
+ g_signal_emit (seat, seat_signals[ACTIVE_SESSION_CHANGED], 0, login1_session_id);
}
}
@@ -151,30 +108,39 @@ seat_properties_changed_cb (GDBusConnection *connection,
gpointer user_data)
{
Login1Seat *seat = user_data;
- GVariantIter *changed_properties;
+ GVariantIter *iter;
GVariantIter *invalidated_properties;
- const gchar *property_name;
- GVariant *property_value;
-
- g_variant_get (parameters, "(sa{sv}as)", NULL, &changed_properties, &invalidated_properties);
-
- while (g_variant_iter_loop (changed_properties, "{&sv}", &property_name, &property_value))
- {
- update_property (seat, property_name, property_value);
- }
- g_variant_iter_free (changed_properties);
-
- while (g_variant_iter_loop (invalidated_properties, "&s", &property_name))
+ const gchar *name;
+ GVariant *value;
+
+ g_variant_get (parameters, "(sa{sv}as)", NULL, &iter, &invalidated_properties);
+ while (g_variant_iter_loop (iter, "{&sv}", &name, &value))
+ update_property (seat, name, value);
+ g_variant_iter_free (iter);
+ while (g_variant_iter_loop (invalidated_properties, "&s", &name))
{
GVariant *result;
+ GError *error = NULL;
- result = get_property_from_dbus (connection, seat, property_name);
+ result = g_dbus_connection_call_sync (connection,
+ LOGIN1_SERVICE_NAME,
+ seat->priv->path,
+ "org.freedesktop.DBus.Properties",
+ "Get",
+ g_variant_new ("(ss)", "org.freedesktop.login1.Seat", name),
+ G_VARIANT_TYPE ("(v)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1,
+ NULL,
+ &error);
+ if (error)
+ g_warning ("Error updating seat property %s: %s", name, error->message);
+ g_clear_error (&error);
if (result)
{
- g_variant_get (result, "(v)", &property_value);
- update_property (seat, property_name, property_value);
- g_variant_unref (property_value);
-
+ g_variant_get (result, "(v)", &value);
+ update_property (seat, name, value);
+ g_variant_unref (value);
g_variant_unref (result);
}
}