diff options
author | Jesús González <jgonzalez@gdr-sistemas.com> | 2014-10-14 13:00:28 +0200 |
---|---|---|
committer | Jesús González <jgonzalez@gdr-sistemas.com> | 2014-10-14 13:00:28 +0200 |
commit | 355200e64bb3d0a7eacd2c8b2d805ed12e851f03 (patch) | |
tree | a79ad066c5b6376d7941e9bc80f1ee4008766c12 /src | |
parent | 605e94ffdee71d78432aca2ecf6b355c698f5bdd (diff) | |
parent | a5615ad176fbc334f069676c82cf475f1995a177 (diff) | |
download | lightdm-355200e64bb3d0a7eacd2c8b2d805ed12e851f03.tar.gz |
Merged changes from parent branch
Diffstat (limited to 'src')
-rw-r--r-- | src/display-manager.c | 8 | ||||
-rw-r--r-- | src/display-manager.h | 4 | ||||
-rw-r--r-- | src/display-server.c | 4 | ||||
-rw-r--r-- | src/display-server.h | 3 | ||||
-rw-r--r-- | src/greeter.c | 20 | ||||
-rw-r--r-- | src/greeter.h | 8 | ||||
-rw-r--r-- | src/lightdm.c | 109 | ||||
-rw-r--r-- | src/login1.c | 102 | ||||
-rw-r--r-- | src/login1.h | 4 | ||||
-rw-r--r-- | src/process.c | 6 | ||||
-rw-r--r-- | src/process.h | 4 | ||||
-rw-r--r-- | src/seat-unity.c | 6 | ||||
-rw-r--r-- | src/seat-xlocal.c | 6 | ||||
-rw-r--r-- | src/seat.c | 28 | ||||
-rw-r--r-- | src/seat.h | 5 | ||||
-rw-r--r-- | src/session.c | 8 | ||||
-rw-r--r-- | src/session.h | 4 | ||||
-rw-r--r-- | src/shared-data-manager.c | 2 | ||||
-rw-r--r-- | src/unity-system-compositor.c | 4 | ||||
-rw-r--r-- | src/vnc-server.c | 2 | ||||
-rw-r--r-- | src/vnc-server.h | 2 | ||||
-rw-r--r-- | src/x-server-local.c | 4 | ||||
-rw-r--r-- | src/x-server-xvnc.c | 4 | ||||
-rw-r--r-- | src/xdmcp-server.c | 2 | ||||
-rw-r--r-- | src/xdmcp-server.h | 2 |
25 files changed, 196 insertions, 155 deletions
diff --git a/src/display-manager.c b/src/display-manager.c index bf8d24ae..b683fdaa 100644 --- a/src/display-manager.c +++ b/src/display-manager.c @@ -111,7 +111,7 @@ display_manager_add_seat (DisplayManager *manager, Seat *seat) return FALSE; manager->priv->seats = g_list_append (manager->priv->seats, g_object_ref (seat)); - g_signal_connect (seat, "stopped", G_CALLBACK (seat_stopped_cb), manager); + g_signal_connect (seat, SEAT_SIGNAL_STOPPED, G_CALLBACK (seat_stopped_cb), manager); g_signal_emit (manager, signals[SEAT_ADDED], 0, seat); return TRUE; @@ -195,7 +195,7 @@ display_manager_class_init (DisplayManagerClass *klass) g_type_class_add_private (klass, sizeof (DisplayManagerPrivate)); signals[SEAT_ADDED] = - g_signal_new ("seat-added", + g_signal_new (DISPLAY_MANAGER_SIGNAL_SEAT_ADDED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (DisplayManagerClass, seat_added), @@ -203,7 +203,7 @@ display_manager_class_init (DisplayManagerClass *klass) NULL, G_TYPE_NONE, 1, SEAT_TYPE); signals[SEAT_REMOVED] = - g_signal_new ("seat-removed", + g_signal_new (DISPLAY_MANAGER_SIGNAL_SEAT_REMOVED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (DisplayManagerClass, seat_removed), @@ -211,7 +211,7 @@ display_manager_class_init (DisplayManagerClass *klass) NULL, G_TYPE_NONE, 1, SEAT_TYPE); signals[STOPPED] = - g_signal_new ("stopped", + g_signal_new (DISPLAY_MANAGER_SIGNAL_STOPPED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (DisplayManagerClass, stopped), diff --git a/src/display-manager.h b/src/display-manager.h index c4b7d939..bc3ec517 100644 --- a/src/display-manager.h +++ b/src/display-manager.h @@ -21,6 +21,10 @@ G_BEGIN_DECLS #define DISPLAY_MANAGER_TYPE (display_manager_get_type()) #define DISPLAY_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), DISPLAY_MANAGER_TYPE, DisplayManager)); +#define DISPLAY_MANAGER_SIGNAL_SEAT_ADDED "seat-added" +#define DISPLAY_MANAGER_SIGNAL_SEAT_REMOVED "seat-removed" +#define DISPLAY_MANAGER_SIGNAL_STOPPED "stopped" + typedef struct DisplayManagerPrivate DisplayManagerPrivate; typedef struct diff --git a/src/display-server.c b/src/display-server.c index 19098d2c..336a6eed 100644 --- a/src/display-server.c +++ b/src/display-server.c @@ -179,7 +179,7 @@ display_server_class_init (DisplayServerClass *klass) g_type_class_add_private (klass, sizeof (DisplayServerPrivate)); signals[READY] = - g_signal_new ("ready", + g_signal_new (DISPLAY_SERVER_SIGNAL_READY, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (DisplayServerClass, ready), @@ -187,7 +187,7 @@ display_server_class_init (DisplayServerClass *klass) NULL, G_TYPE_NONE, 0); signals[STOPPED] = - g_signal_new ("stopped", + g_signal_new (DISPLAY_SERVER_SIGNAL_STOPPED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (DisplayServerClass, stopped), diff --git a/src/display-server.h b/src/display-server.h index c31d096e..4d6f888a 100644 --- a/src/display-server.h +++ b/src/display-server.h @@ -26,6 +26,9 @@ G_BEGIN_DECLS #define DISPLAY_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), DISPLAY_SERVER_TYPE, DisplayServerClass)) #define DISPLAY_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), DISPLAY_SERVER_TYPE, DisplayServerClass)) +#define DISPLAY_SERVER_SIGNAL_READY "ready" +#define DISPLAY_SERVER_SIGNAL_STOPPED "stopped" + typedef struct DisplayServerPrivate DisplayServerPrivate; struct DisplayServer diff --git a/src/greeter.c b/src/greeter.c index 980fa8eb..e1d47f86 100644 --- a/src/greeter.c +++ b/src/greeter.c @@ -436,7 +436,7 @@ handle_login (Greeter *greeter, guint32 sequence_number, const gchar *username) if (greeter->priv->active_username) g_free (greeter->priv->active_username); greeter->priv->active_username = g_strdup (username); - g_object_notify (G_OBJECT (greeter), "active-username"); + g_object_notify (G_OBJECT (greeter), GREETER_PROPERTY_ACTIVE_USERNAME); greeter->priv->authentication_sequence_number = sequence_number; g_signal_emit (greeter, signals[CREATE_SESSION], 0, &greeter->priv->authentication_session); @@ -446,8 +446,8 @@ handle_login (Greeter *greeter, guint32 sequence_number, const gchar *username) return; } - g_signal_connect (G_OBJECT (greeter->priv->authentication_session), "got-messages", G_CALLBACK (pam_messages_cb), greeter); - g_signal_connect (G_OBJECT (greeter->priv->authentication_session), "authentication-complete", G_CALLBACK (authentication_complete_cb), greeter); + g_signal_connect (G_OBJECT (greeter->priv->authentication_session), SESSION_SIGNAL_GOT_MESSAGES, G_CALLBACK (pam_messages_cb), greeter); + g_signal_connect (G_OBJECT (greeter->priv->authentication_session), SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (authentication_complete_cb), greeter); /* Use non-interactive service for autologin user */ autologin_username = g_hash_table_lookup (greeter->priv->hints, "autologin-user"); @@ -550,8 +550,8 @@ handle_login_remote (Greeter *greeter, const gchar *session_name, const gchar *u g_signal_emit (greeter, signals[CREATE_SESSION], 0, &greeter->priv->authentication_session); if (greeter->priv->authentication_session) { - g_signal_connect (G_OBJECT (greeter->priv->authentication_session), "got-messages", G_CALLBACK (pam_messages_cb), greeter); - g_signal_connect (G_OBJECT (greeter->priv->authentication_session), "authentication-complete", G_CALLBACK (authentication_complete_cb), greeter); + g_signal_connect (G_OBJECT (greeter->priv->authentication_session), SESSION_SIGNAL_GOT_MESSAGES, G_CALLBACK (pam_messages_cb), greeter); + g_signal_connect (G_OBJECT (greeter->priv->authentication_session), SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (authentication_complete_cb), greeter); /* Run the session process */ session_set_pam_service (greeter->priv->authentication_session, service); @@ -1101,7 +1101,7 @@ greeter_class_init (GreeterClass *klass) object_class->set_property = greeter_set_property; signals[CONNECTED] = - g_signal_new ("connected", + g_signal_new (GREETER_SIGNAL_CONNECTED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GreeterClass, connected), @@ -1110,7 +1110,7 @@ greeter_class_init (GreeterClass *klass) G_TYPE_NONE, 0); signals[CREATE_SESSION] = - g_signal_new ("create-session", + g_signal_new (GREETER_SIGNAL_CREATE_SESSION, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GreeterClass, create_session), @@ -1120,7 +1120,7 @@ greeter_class_init (GreeterClass *klass) SESSION_TYPE, 0); signals[START_SESSION] = - g_signal_new ("start-session", + g_signal_new (GREETER_SIGNAL_START_SESSION, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GreeterClass, start_session), @@ -1131,8 +1131,8 @@ greeter_class_init (GreeterClass *klass) g_object_class_install_property (object_class, PROP_ACTIVE_USERNAME, - g_param_spec_string ("active-username", - "active-username", + g_param_spec_string (GREETER_PROPERTY_ACTIVE_USERNAME, + GREETER_PROPERTY_ACTIVE_USERNAME, "Active username", NULL, G_PARAM_READABLE)); diff --git a/src/greeter.h b/src/greeter.h index 47929ac1..32b76b5e 100644 --- a/src/greeter.h +++ b/src/greeter.h @@ -22,6 +22,14 @@ G_BEGIN_DECLS #define GREETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GREETER_TYPE, GreeterClass)) #define IS_GREETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GREETER_TYPE)) +#define GREETER_SIGNAL_CONNECTED "connected" +#define GREETER_SIGNAL_CREATE_SESSION "create-session" +#define GREETER_SIGNAL_START_SESSION "start-session" + +#define GREETER_PROPERTY_ACTIVE_USERNAME "active-username" + +#define GREETER_SIGNAL_ACTIVE_USERNAME_CHANGED "notify::" GREETER_PROPERTY_ACTIVE_USERNAME + typedef struct GreeterPrivate GreeterPrivate; typedef struct diff --git a/src/lightdm.c b/src/lightdm.c index 43e7c545..b599e1de 100644 --- a/src/lightdm.c +++ b/src/lightdm.c @@ -147,32 +147,54 @@ log_init (void) g_free (path); } -static void -set_seat_properties (Seat *seat, const gchar *config_section) +static GList* +get_config_sections (const gchar *seat_name) { - gchar **keys; - gint i; + gchar **groups, **i; + GList *config_sections = NULL; - keys = config_get_keys (config_get_instance (), "SeatDefaults"); - for (i = 0; keys && keys[i]; i++) + config_sections = g_list_append (config_sections, g_strdup ("SeatDefaults")); + + if (!seat_name) + return config_sections; + + groups = config_get_groups (config_get_instance ()); + for (i = groups; *i; i++) { - gchar *value = config_get_string (config_get_instance (), "SeatDefaults", keys[i]); - seat_set_property (seat, keys[i], value); - g_free (value); + if (g_str_has_prefix (*i, "Seat:")) + { + const gchar *seat_name_glob = *i + strlen ("Seat:"); + if (g_pattern_match_simple (seat_name_glob, seat_name)) + config_sections = g_list_append (config_sections, g_strdup (*i)); + } } - g_strfreev (keys); + g_strfreev (groups); + + return config_sections; +} - if (config_section) +static void +set_seat_properties (Seat *seat, const gchar *seat_name) +{ + GList *sections, *link; + gchar **keys; + gint i; + + sections = get_config_sections (seat_name); + for (link = sections; link; link = link->next) { - keys = config_get_keys (config_get_instance (), config_section); + const gchar *section = link->data; + g_debug ("Loading properties from config section %s", section); + keys = config_get_keys (config_get_instance (), section); for (i = 0; keys && keys[i]; i++) { - gchar *value = config_get_string (config_get_instance (), config_section, keys[i]); + gchar *value = config_get_string (config_get_instance (), section, keys[i]); seat_set_property (seat, keys[i], value); g_free (value); } g_strfreev (keys); } + g_list_free_full (sections, g_free); } static void @@ -223,11 +245,7 @@ display_manager_seat_removed_cb (DisplayManager *display_manager, Seat *seat) if (next_seat) { - gchar *config_section; - - config_section = g_strdup_printf ("Seat:%s", seat_get_name (seat)); - set_seat_properties (next_seat, config_section); - g_free (config_section); + set_seat_properties (next_seat, seat_get_name (seat)); // We set this manually on default seat. Let's port it over if needed. if (seat_get_boolean_property (seat, "exit-on-failure")) @@ -705,8 +723,8 @@ seat_added_cb (DisplayManager *display_manager, Seat *seat) emit_object_value_changed (bus, "/org/freedesktop/DisplayManager", "org.freedesktop.DisplayManager", "Seats", get_seat_list ()); emit_object_signal (bus, "/org/freedesktop/DisplayManager", "SeatAdded", entry->path); - g_signal_connect (seat, "running-user-session", G_CALLBACK (running_user_session_cb), NULL); - g_signal_connect (seat, "session-removed", G_CALLBACK (session_removed_cb), NULL); + g_signal_connect (seat, SEAT_SIGNAL_RUNNING_USER_SESSION, G_CALLBACK (running_user_session_cb), NULL); + g_signal_connect (seat, SEAT_SIGNAL_SESSION_REMOVED, G_CALLBACK (session_removed_cb), NULL); } static void @@ -838,8 +856,8 @@ bus_acquired_cb (GDBusConnection *connection, seat_bus_entries = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, seat_bus_entry_free); session_bus_entries = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, session_bus_entry_free); - g_signal_connect (display_manager, "seat-added", G_CALLBACK (seat_added_cb), NULL); - g_signal_connect (display_manager, "seat-removed", G_CALLBACK (seat_removed_cb), NULL); + g_signal_connect (display_manager, DISPLAY_MANAGER_SIGNAL_SEAT_ADDED, G_CALLBACK (seat_added_cb), NULL); + g_signal_connect (display_manager, DISPLAY_MANAGER_SIGNAL_SEAT_REMOVED, G_CALLBACK (seat_removed_cb), NULL); for (link = display_manager_get_seats (display_manager); link; link = link->next) seat_added_cb (display_manager, (Seat *) link->data); @@ -858,7 +876,7 @@ bus_acquired_cb (GDBusConnection *connection, if (port > 0) xdmcp_server_set_port (xdmcp_server, port); } - g_signal_connect (xdmcp_server, "new-session", G_CALLBACK (xdmcp_session_cb), NULL); + g_signal_connect (xdmcp_server, XDMCP_SERVER_SIGNAL_NEW_SESSION, G_CALLBACK (xdmcp_session_cb), NULL); key_name = config_get_string (config_get_instance (), "XDMCPServer", "key"); if (key_name) @@ -911,7 +929,7 @@ bus_acquired_cb (GDBusConnection *connection, if (port > 0) vnc_server_set_port (vnc_server, port); } - g_signal_connect (vnc_server, "new-connection", G_CALLBACK (vnc_connection_cb), NULL); + g_signal_connect (vnc_server, VNC_SERVER_SIGNAL_NEW_CONNECTION, G_CALLBACK (vnc_connection_cb), NULL); g_debug ("Starting VNC server on TCP/IP port %d", vnc_server_get_port (vnc_server)); vnc_server_start (vnc_server); @@ -940,42 +958,31 @@ static gboolean add_login1_seat (Login1Seat *login1_seat) { const gchar *seat_name = login1_seat_get_id (login1_seat); - gchar **groups, **i; - gchar *config_section = NULL; gchar **types = NULL, **type; + GList *config_sections = NULL, *link; Seat *seat = NULL; gboolean is_seat0, started = FALSE; g_debug ("New seat added from logind: %s", seat_name); is_seat0 = strcmp (seat_name, "seat0") == 0; - groups = config_get_groups (config_get_instance ()); - for (i = groups; !config_section && *i; i++) - { - if (g_str_has_prefix (*i, "Seat:") && - g_str_has_suffix (*i, seat_name)) - { - config_section = g_strdup (*i); - break; - } - } - g_strfreev (groups); - - if (config_section) + config_sections = get_config_sections (seat_name); + for (link = g_list_last (config_sections); link; link = link->prev) { - g_debug ("Loading properties from config section %s", config_section); + gchar *config_section = link->data; types = config_get_string_list (config_get_instance (), config_section, "type"); + if (types) + break; } + g_list_free_full (config_sections, g_free); - if (!types) - types = config_get_string_list (config_get_instance (), "SeatDefaults", "type"); for (type = types; !seat && type && *type; type++) seat = seat_new (*type, seat_name); g_strfreev (types); if (seat) { - set_seat_properties (seat, NULL); + set_seat_properties (seat, seat_name); if (!login1_seat_get_can_multi_session (login1_seat)) { @@ -983,9 +990,6 @@ add_login1_seat (Login1Seat *login1_seat) seat_set_property (seat, "allow-user-switching", "false"); } - if (config_section) - set_seat_properties (seat, config_section); - if (is_seat0) seat_set_property (seat, "exit-on-failure", "true"); } @@ -999,7 +1003,6 @@ add_login1_seat (Login1Seat *login1_seat) g_debug ("Failed to start seat: %s", seat_name); } - g_free (config_section); g_object_unref (seat); return started; @@ -1035,7 +1038,7 @@ update_login1_seat (Login1Seat *login1_seat) if (seat) { if (seat_get_is_stopping (seat)) - g_signal_connect (seat, "stopped", G_CALLBACK (seat_stopped_cb), login1_seat); + g_signal_connect (seat, SEAT_SIGNAL_STOPPED, G_CALLBACK (seat_stopped_cb), login1_seat); return TRUE; } @@ -1180,7 +1183,7 @@ main (int argc, char **argv) messages = g_list_append (messages, g_strdup_printf ("Starting Light Display Manager %s, UID=%i PID=%i", VERSION, getuid (), getpid ())); - g_signal_connect (process_get_current (), "got-signal", G_CALLBACK (signal_cb), NULL); + g_signal_connect (process_get_current (), PROCESS_SIGNAL_GOT_SIGNAL, G_CALLBACK (signal_cb), NULL); option_context = g_option_context_new (/* Arguments and description for --help test */ _("- Display Manager")); @@ -1444,8 +1447,8 @@ main (int argc, char **argv) g_debug ("Using Xephyr for X servers"); display_manager = display_manager_new (); - g_signal_connect (display_manager, "stopped", G_CALLBACK (display_manager_stopped_cb), NULL); - g_signal_connect (display_manager, "seat-removed", G_CALLBACK (display_manager_seat_removed_cb), NULL); + g_signal_connect (display_manager, DISPLAY_MANAGER_SIGNAL_STOPPED, G_CALLBACK (display_manager_stopped_cb), NULL); + g_signal_connect (display_manager, DISPLAY_MANAGER_SIGNAL_SEAT_REMOVED, G_CALLBACK (display_manager_seat_removed_cb), NULL); shared_data_manager_start (shared_data_manager_get_instance ()); @@ -1457,8 +1460,8 @@ main (int argc, char **argv) if (config_get_boolean (config_get_instance (), "LightDM", "start-default-seat")) { - g_signal_connect (login1_service_get_instance (), "seat-added", G_CALLBACK (login1_service_seat_added_cb), NULL); - g_signal_connect (login1_service_get_instance (), "seat-removed", G_CALLBACK (login1_service_seat_removed_cb), NULL); + g_signal_connect (login1_service_get_instance (), LOGIN1_SERVICE_SIGNAL_SEAT_ADDED, G_CALLBACK (login1_service_seat_added_cb), NULL); + g_signal_connect (login1_service_get_instance (), LOGIN1_SERVICE_SIGNAL_SEAT_REMOVED, G_CALLBACK (login1_service_seat_removed_cb), NULL); for (link = login1_service_get_seats (login1_service_get_instance ()); link; link = link->next) { diff --git a/src/login1.c b/src/login1.c index a420d19a..59ed72f4 100644 --- a/src/login1.c +++ b/src/login1.c @@ -86,7 +86,7 @@ login1_service_get_instance (void) } static GVariant * -seat_get_property (GDBusConnection *connection, +get_property_from_dbus (GDBusConnection *connection, Login1Seat *seat, const gchar *property_name) { @@ -112,6 +112,36 @@ seat_get_property (GDBusConnection *connection, } static void +update_property (Login1Seat *seat, const gchar *name, GVariant *value) +{ + if (strcmp (name, "CanGraphical") == 0 && g_variant_is_of_type (value, G_VARIANT_TYPE_BOOLEAN)) + { + 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_ARRAY)) + { + 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); + } + } +} + +static void seat_properties_changed_cb (GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, @@ -121,61 +151,31 @@ seat_properties_changed_cb (GDBusConnection *connection, gpointer user_data) { Login1Seat *seat = user_data; + GVariantIter *changed_properties; GVariantIter *invalidated_properties; const gchar *property_name; + GVariant *property_value; - g_variant_get (parameters, "(sa{sv}as)", NULL, NULL, &invalidated_properties); + 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)) { - if (strcmp (property_name, "CanGraphical") == 0) - { - GVariant *result; - - result = seat_get_property (connection, seat, property_name); - if (result) - { - GVariant *value; - - g_variant_get (result, "(v)", &value); - seat->priv->can_graphical = g_variant_get_boolean (value); - g_variant_unref (value); - - g_signal_emit (seat, seat_signals[CAN_GRAPHICAL_CHANGED], 0); + GVariant *result; - g_variant_unref (result); - } - } - if (strcmp (property_name, "ActiveSession") == 0) + result = get_property_from_dbus (connection, seat, property_name); + if (result) { - GVariant *result; - - result = seat_get_property (connection, seat, property_name); - if (result) - { - GVariant *value1, *value2; - - g_variant_get (result, "(v)", &value1); - - // returned value should be of type (so) - value2 = g_variant_get_child_value (value1, 0); - - if (value2) - { - const gchar *login1_session_id; - - login1_session_id = g_variant_get_string (value2, NULL); + g_variant_get (result, "(v)", &property_value); + update_property (seat, property_name, property_value); + g_variant_unref (property_value); - if (login1_session_id) - { - g_signal_emit (seat, seat_signals[ACTIVE_SESSION_CHANGED], 0, login1_session_id); - } - - g_variant_unref (value2); - } - - g_variant_unref (value1); - g_variant_unref (result); - } + g_variant_unref (result); } } g_variant_iter_free (invalidated_properties); @@ -499,7 +499,7 @@ login1_service_class_init (Login1ServiceClass *klass) g_type_class_add_private (klass, sizeof (Login1ServicePrivate)); service_signals[SEAT_ADDED] = - g_signal_new ("seat-added", + g_signal_new (LOGIN1_SERVICE_SIGNAL_SEAT_ADDED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (Login1ServiceClass, seat_added), @@ -507,7 +507,7 @@ login1_service_class_init (Login1ServiceClass *klass) NULL, G_TYPE_NONE, 1, LOGIN1_SEAT_TYPE); service_signals[SEAT_REMOVED] = - g_signal_new ("seat-removed", + g_signal_new (LOGIN1_SERVICE_SIGNAL_SEAT_REMOVED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (Login1ServiceClass, seat_removed), @@ -566,7 +566,7 @@ login1_seat_class_init (Login1SeatClass *klass) g_type_class_add_private (klass, sizeof (Login1SeatPrivate)); seat_signals[CAN_GRAPHICAL_CHANGED] = - g_signal_new ("can-graphical-changed", + g_signal_new (LOGIN1_SEAT_SIGNAL_CAN_GRAPHICAL_CHANGED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (Login1SeatClass, can_graphical_changed), diff --git a/src/login1.h b/src/login1.h index 951df94f..e34e806b 100644 --- a/src/login1.h +++ b/src/login1.h @@ -22,6 +22,10 @@ G_BEGIN_DECLS #define LOGIN1_SERVICE_TYPE (login1_service_get_type()) #define LOGIN1_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LOGIN1_SERVICE_TYPE, Login1Service)); +#define LOGIN1_SERVICE_SIGNAL_SEAT_ADDED "seat-added" +#define LOGIN1_SERVICE_SIGNAL_SEAT_REMOVED "seat-removed" + +#define LOGIN1_SEAT_SIGNAL_CAN_GRAPHICAL_CHANGED "can-graphical-changed" #define LOGIN1_SIGNAL_ACTIVE_SESION_CHANGED "active-session-changed" typedef struct Login1SeatPrivate Login1SeatPrivate; diff --git a/src/process.c b/src/process.c index adb06f78..50c0a9b0 100644 --- a/src/process.c +++ b/src/process.c @@ -432,7 +432,7 @@ process_class_init (ProcessClass *klass) g_type_class_add_private (klass, sizeof (ProcessPrivate)); signals[GOT_DATA] = - g_signal_new ("got-data", + g_signal_new (PROCESS_SIGNAL_GOT_DATA, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ProcessClass, got_data), @@ -440,7 +440,7 @@ process_class_init (ProcessClass *klass) NULL, G_TYPE_NONE, 0); signals[GOT_SIGNAL] = - g_signal_new ("got-signal", + g_signal_new (PROCESS_SIGNAL_GOT_SIGNAL, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ProcessClass, got_signal), @@ -448,7 +448,7 @@ process_class_init (ProcessClass *klass) NULL, G_TYPE_NONE, 1, G_TYPE_INT); signals[STOPPED] = - g_signal_new ("stopped", + g_signal_new (PROCESS_SIGNAL_STOPPED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (ProcessClass, stopped), diff --git a/src/process.h b/src/process.h index d15477b1..b8c50926 100644 --- a/src/process.h +++ b/src/process.h @@ -21,6 +21,10 @@ G_BEGIN_DECLS #define PROCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PROCESS_TYPE, Process)) #define PROCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PROCESS_TYPE, ProcessClass)) +#define PROCESS_SIGNAL_GOT_DATA "got-data" +#define PROCESS_SIGNAL_GOT_SIGNAL "got-signal" +#define PROCESS_SIGNAL_STOPPED "stopped" + typedef struct ProcessPrivate ProcessPrivate; typedef struct diff --git a/src/seat-unity.c b/src/seat-unity.c index bc08437d..32d30b23 100644 --- a/src/seat-unity.c +++ b/src/seat-unity.c @@ -127,7 +127,7 @@ compositor_ready_cb (UnitySystemCompositor *compositor, SeatUnity *seat) g_key_file_free (keys); } - g_signal_connect (seat->priv->xdmcp_x_server, "stopped", G_CALLBACK (xdmcp_x_server_stopped_cb), seat); + g_signal_connect (seat->priv->xdmcp_x_server, DISPLAY_SERVER_SIGNAL_STOPPED, G_CALLBACK (xdmcp_x_server_stopped_cb), seat); if (!display_server_start (DISPLAY_SERVER (seat->priv->xdmcp_x_server))) seat_stop (SEAT (seat)); } @@ -182,8 +182,8 @@ seat_unity_start (Seat *seat) timeout = 60; SEAT_UNITY (seat)->priv->compositor = unity_system_compositor_new (); - g_signal_connect (SEAT_UNITY (seat)->priv->compositor, "ready", G_CALLBACK (compositor_ready_cb), seat); - g_signal_connect (SEAT_UNITY (seat)->priv->compositor, "stopped", G_CALLBACK (compositor_stopped_cb), seat); + g_signal_connect (SEAT_UNITY (seat)->priv->compositor, DISPLAY_SERVER_SIGNAL_READY, G_CALLBACK (compositor_ready_cb), seat); + g_signal_connect (SEAT_UNITY (seat)->priv->compositor, DISPLAY_SERVER_SIGNAL_STOPPED, G_CALLBACK (compositor_stopped_cb), seat); unity_system_compositor_set_command (SEAT_UNITY (seat)->priv->compositor, seat_get_string_property (SEAT (seat), "unity-compositor-command")); unity_system_compositor_set_vt (SEAT_UNITY (seat)->priv->compositor, vt); unity_system_compositor_set_timeout (SEAT_UNITY (seat)->priv->compositor, timeout); diff --git a/src/seat-xlocal.c b/src/seat-xlocal.c index 04a76982..7b5ec7ed 100644 --- a/src/seat-xlocal.c +++ b/src/seat-xlocal.c @@ -110,7 +110,7 @@ seat_xlocal_start (Seat *seat) g_key_file_free (keys); } - g_signal_connect (s->priv->xdmcp_x_server, "stopped", G_CALLBACK (xdmcp_x_server_stopped_cb), seat); + g_signal_connect (s->priv->xdmcp_x_server, DISPLAY_SERVER_SIGNAL_STOPPED, G_CALLBACK (xdmcp_x_server_stopped_cb), seat); return display_server_start (DISPLAY_SERVER (s->priv->xdmcp_x_server)); } @@ -150,8 +150,8 @@ get_vt (Seat *seat, DisplayServer *display_server) if (active_vt >= vt_get_min ()) { vt = active_vt; - g_signal_connect (display_server, "ready", G_CALLBACK (display_server_ready_cb), seat); - g_signal_connect (display_server, "stopped", G_CALLBACK (display_server_transition_plymouth_cb), seat); + g_signal_connect (display_server, DISPLAY_SERVER_SIGNAL_READY, G_CALLBACK (display_server_ready_cb), seat); + g_signal_connect (display_server, DISPLAY_SERVER_SIGNAL_STOPPED, G_CALLBACK (display_server_transition_plymouth_cb), seat); plymouth_deactivate (); } else @@ -902,8 +902,8 @@ create_session (Seat *seat, gboolean autostart) session = SEAT_GET_CLASS (seat)->create_session (seat); seat->priv->sessions = g_list_append (seat->priv->sessions, session); if (autostart) - g_signal_connect (session, "authentication-complete", G_CALLBACK (session_authentication_complete_cb), seat); - g_signal_connect (session, "stopped", G_CALLBACK (session_stopped_cb), seat); + g_signal_connect (session, SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (session_authentication_complete_cb), seat); + g_signal_connect (session, SESSION_SIGNAL_STOPPED, G_CALLBACK (session_stopped_cb), seat); set_session_env (session); @@ -1263,9 +1263,9 @@ create_greeter_session (Seat *seat) greeter_session = SEAT_GET_CLASS (seat)->create_greeter_session (seat); session_set_config (SESSION (greeter_session), session_config); seat->priv->sessions = g_list_append (seat->priv->sessions, SESSION (greeter_session)); - g_signal_connect (greeter_session, "notify::active-username", G_CALLBACK (greeter_active_username_changed_cb), seat); - g_signal_connect (greeter_session, "authentication-complete", G_CALLBACK (session_authentication_complete_cb), seat); - g_signal_connect (greeter_session, "stopped", G_CALLBACK (session_stopped_cb), seat); + g_signal_connect (greeter_session, GREETER_SIGNAL_ACTIVE_USERNAME_CHANGED, G_CALLBACK (greeter_active_username_changed_cb), seat); + g_signal_connect (greeter_session, SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (session_authentication_complete_cb), seat); + g_signal_connect (greeter_session, SESSION_SIGNAL_STOPPED, G_CALLBACK (session_stopped_cb), seat); set_session_env (SESSION (greeter_session)); session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter"); @@ -1289,8 +1289,8 @@ create_greeter_session (Seat *seat) greeter_set_pam_services (greeter_session, seat_get_string_property (seat, "pam-service"), seat_get_string_property (seat, "pam-autologin-service")); - g_signal_connect (greeter_session, "create-session", G_CALLBACK (greeter_create_session_cb), seat); - g_signal_connect (greeter_session, "start-session", G_CALLBACK (greeter_start_session_cb), seat); + g_signal_connect (greeter_session, GREETER_SIGNAL_CREATE_SESSION, G_CALLBACK (greeter_create_session_cb), seat); + g_signal_connect (greeter_session, GREETER_SIGNAL_START_SESSION, G_CALLBACK (greeter_start_session_cb), seat); /* Set hints to greeter */ greeter_set_allow_guest (greeter_session, seat_get_allow_guest (seat)); @@ -1386,8 +1386,8 @@ create_display_server (Seat *seat, Session *session) return NULL; seat->priv->display_servers = g_list_append (seat->priv->display_servers, display_server); - g_signal_connect (display_server, "ready", G_CALLBACK (display_server_ready_cb), seat); - g_signal_connect (display_server, "stopped", G_CALLBACK (display_server_stopped_cb), seat); + g_signal_connect (display_server, DISPLAY_SERVER_SIGNAL_READY, G_CALLBACK (display_server_ready_cb), seat); + g_signal_connect (display_server, DISPLAY_SERVER_SIGNAL_STOPPED, G_CALLBACK (display_server_stopped_cb), seat); return display_server; } @@ -1518,7 +1518,7 @@ seat_switch_to_user (Seat *seat, const gchar *username, const gchar *session_nam /* Attempt to authenticate them */ session = create_user_session (seat, username, FALSE); - g_signal_connect (session, "authentication-complete", G_CALLBACK (switch_authentication_complete_cb), seat); + g_signal_connect (session, SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_CALLBACK (switch_authentication_complete_cb), seat); session_set_pam_service (session, seat_get_string_property (seat, "pam-service")); return session_start (session); @@ -1885,7 +1885,7 @@ seat_class_init (SeatClass *klass) g_type_class_add_private (klass, sizeof (SeatPrivate)); signals[SESSION_ADDED] = - g_signal_new ("session-added", + g_signal_new (SEAT_SIGNAL_SESSION_ADDED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (SeatClass, session_added), @@ -1893,7 +1893,7 @@ seat_class_init (SeatClass *klass) NULL, G_TYPE_NONE, 1, SESSION_TYPE); signals[RUNNING_USER_SESSION] = - g_signal_new ("running-user-session", + g_signal_new (SEAT_SIGNAL_RUNNING_USER_SESSION, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (SeatClass, running_user_session), @@ -1901,7 +1901,7 @@ seat_class_init (SeatClass *klass) NULL, G_TYPE_NONE, 1, SESSION_TYPE); signals[SESSION_REMOVED] = - g_signal_new ("session-removed", + g_signal_new (SEAT_SIGNAL_SESSION_REMOVED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (SeatClass, session_removed), @@ -1909,7 +1909,7 @@ seat_class_init (SeatClass *klass) NULL, G_TYPE_NONE, 1, SESSION_TYPE); signals[STOPPED] = - g_signal_new ("stopped", + g_signal_new (SEAT_SIGNAL_STOPPED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (SeatClass, stopped), @@ -26,6 +26,11 @@ G_BEGIN_DECLS #define SEAT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SEAT_TYPE, SeatClass)) #define SEAT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SEAT_TYPE, SeatClass)) +#define SEAT_SIGNAL_SESSION_ADDED "session-added" +#define SEAT_SIGNAL_RUNNING_USER_SESSION "running-user-session" +#define SEAT_SIGNAL_SESSION_REMOVED "session-removed" +#define SEAT_SIGNAL_STOPPED "stopped" + typedef struct SeatPrivate SeatPrivate; typedef struct diff --git a/src/session.c b/src/session.c index 2797982b..c8ac06f5 100644 --- a/src/session.c +++ b/src/session.c @@ -99,7 +99,7 @@ struct SessionPrivate /* Console kit cookie */ gchar *console_kit_cookie; - /* login1 session */ + /* login1 session ID */ gchar *login1_session_id; /* Environment to set in child */ @@ -965,7 +965,7 @@ session_class_init (SessionClass *klass) g_type_class_add_private (klass, sizeof (SessionPrivate)); signals[GOT_MESSAGES] = - g_signal_new ("got-messages", + g_signal_new (SESSION_SIGNAL_GOT_MESSAGES, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (SessionClass, got_messages), @@ -974,7 +974,7 @@ session_class_init (SessionClass *klass) G_TYPE_NONE, 0); signals[AUTHENTICATION_COMPLETE] = - g_signal_new ("authentication-complete", + g_signal_new (SESSION_SIGNAL_AUTHENTICATION_COMPLETE, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (SessionClass, authentication_complete), @@ -983,7 +983,7 @@ session_class_init (SessionClass *klass) G_TYPE_NONE, 0); signals[STOPPED] = - g_signal_new ("stopped", + g_signal_new (SESSION_SIGNAL_STOPPED, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (SessionClass, stopped), diff --git a/src/session.h b/src/session.h index b765021d..c62303e6 100644 --- a/src/session.h +++ b/src/session.h @@ -31,6 +31,10 @@ G_BEGIN_DECLS #define SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SESSION_TYPE, SessionClass)) #define SESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SESSION_TYPE, SessionClass)) +#define SESSION_SIGNAL_GOT_MESSAGES "got-messages" +#define SESSION_SIGNAL_AUTHENTICATION_COMPLETE "authentication-complete" +#define SESSION_SIGNAL_STOPPED "stopped" + typedef struct SessionPrivate SessionPrivate; struct Session diff --git a/src/shared-data-manager.c b/src/shared-data-manager.c index 5b667647..47f1c10d 100644 --- a/src/shared-data-manager.c +++ b/src/shared-data-manager.c @@ -227,7 +227,7 @@ shared_data_manager_start (SharedDataManager *manager) g_object_unref (file); /* And listen for user removals. */ - g_signal_connect (common_user_list_get_instance (), "user-removed", G_CALLBACK (user_removed_cb), manager); + g_signal_connect (common_user_list_get_instance (), USER_LIST_SIGNAL_USER_REMOVED, G_CALLBACK (user_removed_cb), manager); } static void diff --git a/src/unity-system-compositor.c b/src/unity-system-compositor.c index 40502557..03824284 100644 --- a/src/unity-system-compositor.c +++ b/src/unity-system-compositor.c @@ -85,6 +85,8 @@ void unity_system_compositor_set_command (UnitySystemCompositor *compositor, const gchar *command) { g_return_if_fail (compositor != NULL); + g_return_if_fail (command != NULL); + g_free (compositor->priv->command); compositor->priv->command = g_strdup (command); } @@ -438,7 +440,7 @@ unity_system_compositor_start (DisplayServer *server) g_string_free (command, TRUE); /* Start the compositor */ - g_signal_connect (compositor->priv->process, "stopped", G_CALLBACK (stopped_cb), compositor); + g_signal_connect (compositor->priv->process, PROCESS_SIGNAL_STOPPED, G_CALLBACK (stopped_cb), compositor); result = process_start (compositor->priv->process, FALSE); /* Close compostor ends of the pipes */ diff --git a/src/vnc-server.c b/src/vnc-server.c index 1755ffdb..2ccb2292 100644 --- a/src/vnc-server.c +++ b/src/vnc-server.c @@ -168,7 +168,7 @@ vnc_server_class_init (VNCServerClass *klass) g_type_class_add_private (klass, sizeof (VNCServerPrivate)); signals[NEW_CONNECTION] = - g_signal_new ("new-connection", + g_signal_new (VNC_SERVER_SIGNAL_NEW_CONNECTION, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (VNCServerClass, new_connection), diff --git a/src/vnc-server.h b/src/vnc-server.h index 109dc904..64fe1daf 100644 --- a/src/vnc-server.h +++ b/src/vnc-server.h @@ -19,6 +19,8 @@ G_BEGIN_DECLS #define VNC_SERVER_TYPE (vnc_server_get_type()) #define VNC_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VNC_SERVER_TYPE, VNCServer)); +#define VNC_SERVER_SIGNAL_NEW_CONNECTION "new-connection" + typedef struct VNCServerPrivate VNCServerPrivate; typedef struct diff --git a/src/x-server-local.c b/src/x-server-local.c index 3f58e0b7..b6a55aa9 100644 --- a/src/x-server-local.c +++ b/src/x-server-local.c @@ -439,8 +439,8 @@ x_server_local_start (DisplayServer *display_server) server->priv->x_server_process = process_new (run_cb, server); process_set_clear_environment (server->priv->x_server_process, TRUE); - g_signal_connect (server->priv->x_server_process, "got-signal", G_CALLBACK (got_signal_cb), server); - g_signal_connect (server->priv->x_server_process, "stopped", G_CALLBACK (stopped_cb), server); + g_signal_connect (server->priv->x_server_process, PROCESS_SIGNAL_GOT_SIGNAL, G_CALLBACK (got_signal_cb), server); + g_signal_connect (server->priv->x_server_process, PROCESS_SIGNAL_STOPPED, G_CALLBACK (stopped_cb), server); /* Setup logging */ filename = g_strdup_printf ("%s.log", display_server_get_name (display_server)); diff --git a/src/x-server-xvnc.c b/src/x-server-xvnc.c index cea1782a..a48290e5 100644 --- a/src/x-server-xvnc.c +++ b/src/x-server-xvnc.c @@ -195,8 +195,8 @@ x_server_xvnc_start (DisplayServer *display_server) server->priv->x_server_process = process_new (run_cb, server); process_set_clear_environment (server->priv->x_server_process, TRUE); - g_signal_connect (server->priv->x_server_process, "got-signal", G_CALLBACK (got_signal_cb), server); - g_signal_connect (server->priv->x_server_process, "stopped", G_CALLBACK (stopped_cb), server); + g_signal_connect (server->priv->x_server_process, PROCESS_SIGNAL_GOT_SIGNAL, G_CALLBACK (got_signal_cb), server); + g_signal_connect (server->priv->x_server_process, PROCESS_SIGNAL_STOPPED, G_CALLBACK (stopped_cb), server); /* Setup logging */ filename = g_strdup_printf ("%s.log", display_server_get_name (display_server)); diff --git a/src/xdmcp-server.c b/src/xdmcp-server.c index 4d45fb40..d240e380 100644 --- a/src/xdmcp-server.c +++ b/src/xdmcp-server.c @@ -703,7 +703,7 @@ xdmcp_server_class_init (XDMCPServerClass *klass) g_type_class_add_private (klass, sizeof (XDMCPServerPrivate)); signals[NEW_SESSION] = - g_signal_new ("new-session", + g_signal_new (XDMCP_SERVER_SIGNAL_NEW_SESSION, G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (XDMCPServerClass, new_session), diff --git a/src/xdmcp-server.h b/src/xdmcp-server.h index 31cd0fb6..32ca63b4 100644 --- a/src/xdmcp-server.h +++ b/src/xdmcp-server.h @@ -21,6 +21,8 @@ G_BEGIN_DECLS #define XDMCP_SERVER_TYPE (xdmcp_server_get_type()) #define XDMCP_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), XDMCP_SERVER_TYPE, XDMCPServer)); +#define XDMCP_SERVER_SIGNAL_NEW_SESSION "new-session" + typedef struct XDMCPServerPrivate XDMCPServerPrivate; typedef struct |