summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJesús González <jgonzalez@gdr-sistemas.com>2014-10-14 13:00:28 +0200
committerJesús González <jgonzalez@gdr-sistemas.com>2014-10-14 13:00:28 +0200
commit355200e64bb3d0a7eacd2c8b2d805ed12e851f03 (patch)
treea79ad066c5b6376d7941e9bc80f1ee4008766c12 /src
parent605e94ffdee71d78432aca2ecf6b355c698f5bdd (diff)
parenta5615ad176fbc334f069676c82cf475f1995a177 (diff)
downloadlightdm-355200e64bb3d0a7eacd2c8b2d805ed12e851f03.tar.gz
Merged changes from parent branch
Diffstat (limited to 'src')
-rw-r--r--src/display-manager.c8
-rw-r--r--src/display-manager.h4
-rw-r--r--src/display-server.c4
-rw-r--r--src/display-server.h3
-rw-r--r--src/greeter.c20
-rw-r--r--src/greeter.h8
-rw-r--r--src/lightdm.c109
-rw-r--r--src/login1.c102
-rw-r--r--src/login1.h4
-rw-r--r--src/process.c6
-rw-r--r--src/process.h4
-rw-r--r--src/seat-unity.c6
-rw-r--r--src/seat-xlocal.c6
-rw-r--r--src/seat.c28
-rw-r--r--src/seat.h5
-rw-r--r--src/session.c8
-rw-r--r--src/session.h4
-rw-r--r--src/shared-data-manager.c2
-rw-r--r--src/unity-system-compositor.c4
-rw-r--r--src/vnc-server.c2
-rw-r--r--src/vnc-server.h2
-rw-r--r--src/x-server-local.c4
-rw-r--r--src/x-server-xvnc.c4
-rw-r--r--src/xdmcp-server.c2
-rw-r--r--src/xdmcp-server.h2
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
diff --git a/src/seat.c b/src/seat.c
index 146e4106..829e7d74 100644
--- a/src/seat.c
+++ b/src/seat.c
@@ -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),
diff --git a/src/seat.h b/src/seat.h
index 8b86568b..e8d2bc6f 100644
--- a/src/seat.h
+++ b/src/seat.h
@@ -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