summaryrefslogtreecommitdiff
path: root/daemon/gdm-display.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2015-02-11 01:51:07 -0500
committerRay Strode <rstrode@redhat.com>2015-02-18 17:34:12 -0500
commit48f35210656c6f80052dce598d648bd17101a1cc (patch)
treee028d387a96f51cf7c8d4d37792cf2758480251c /daemon/gdm-display.c
parentca5fccc2217644ab5c4c5e8de7fa2fc8b627f63a (diff)
downloadgdm-48f35210656c6f80052dce598d648bd17101a1cc.tar.gz
slave: drop the slaves
At this point the slaves do nothing useful, so we can get rid of them. https://bugzilla.gnome.org/show_bug.cgi?id=744764
Diffstat (limited to 'daemon/gdm-display.c')
-rw-r--r--daemon/gdm-display.c125
1 files changed, 43 insertions, 82 deletions
diff --git a/daemon/gdm-display.c b/daemon/gdm-display.c
index caec1c06..3867deb0 100644
--- a/daemon/gdm-display.c
+++ b/daemon/gdm-display.c
@@ -47,8 +47,6 @@
#include "gdm-settings-keys.h"
#include "gdm-launch-environment.h"
-#include "gdm-simple-slave.h"
-#include "gdm-xdmcp-chooser-slave.h"
#include "gdm-dbus-util.h"
#include "gdm-xerrors.h"
@@ -68,8 +66,7 @@ struct GdmDisplayPrivate
char *x11_display_name;
int status;
time_t creation_time;
- GTimer *slave_timer;
- GType slave_type;
+ GTimer *server_timer;
char *x11_cookie;
gsize x11_cookie_size;
@@ -79,7 +76,6 @@ struct GdmDisplayPrivate
Display *x11_display;
- GdmSlave *slave;
GDBusConnection *connection;
GdmDisplayAccessFile *user_access_file;
@@ -110,7 +106,6 @@ enum {
PROP_X11_COOKIE,
PROP_X11_AUTHORITY_FILE,
PROP_IS_LOCAL,
- PROP_SLAVE_TYPE,
PROP_LAUNCH_ENVIRONMENT,
PROP_IS_INITIAL,
PROP_ALLOW_TIMED_LOGIN,
@@ -378,7 +373,7 @@ gdm_display_add_user_authorization (GdmDisplay *self,
self->priv->user_access_file = access_file;
g_debug ("GdmDisplay: Added user authorization for %s: %s", username, *filename);
- /* Remove access for the programs run by slave and greeter now that the
+ /* Remove access for the programs run by greeter now that the
* user session is starting.
*/
setup_xhost_auth (host_entries, si_entries);
@@ -388,7 +383,7 @@ gdm_display_add_user_authorization (GdmDisplay *self,
}
XSync (self->priv->x11_display, False);
if (gdm_error_trap_pop ()) {
- g_warning ("Failed to remove slave program access to the display. Trying to proceed.");
+ g_warning ("Failed to remove greeter program access to the display. Trying to proceed.");
}
return TRUE;
@@ -603,13 +598,6 @@ queue_finish (GdmDisplay *self)
}
static void
-on_slave_stopped (GdmSlave *slave,
- GdmDisplay *self)
-{
- queue_finish (self);
-}
-
-static void
_gdm_display_set_status (GdmDisplay *self,
int status)
{
@@ -620,16 +608,9 @@ _gdm_display_set_status (GdmDisplay *self,
}
static void
-on_slave_started (GdmSlave *slave,
- GdmDisplay *self)
-{
- _gdm_display_set_status (self, GDM_DISPLAY_MANAGED);
-}
-
-static void
gdm_display_real_manage (GdmDisplay *self)
{
- gdm_slave_start (self->priv->slave);
+ _gdm_display_set_status (self, GDM_DISPLAY_MANAGED);
}
static gboolean
@@ -647,17 +628,6 @@ gdm_display_real_prepare (GdmDisplay *self)
_gdm_display_set_status (self, GDM_DISPLAY_PREPARED);
- self->priv->slave = GDM_SLAVE (g_object_new (self->priv->slave_type,
- "display", self,
- NULL));
- g_signal_connect_object (self->priv->slave, "started",
- G_CALLBACK (on_slave_started),
- self,
- 0);
- g_signal_connect_object (self->priv->slave, "stopped",
- G_CALLBACK (on_slave_stopped),
- self,
- 0);
return TRUE;
}
@@ -748,7 +718,7 @@ gdm_display_manage (GdmDisplay *self)
}
}
- g_timer_start (self->priv->slave_timer);
+ g_timer_start (self->priv->server_timer);
look_for_existing_users_and_manage (self);
return TRUE;
@@ -780,17 +750,7 @@ gdm_display_unmanage (GdmDisplay *self)
g_debug ("GdmDisplay: unmanage display");
- g_timer_stop (self->priv->slave_timer);
-
- if (self->priv->slave != NULL) {
- g_signal_handlers_disconnect_by_func (self->priv->slave,
- G_CALLBACK (on_slave_started), self);
- g_signal_handlers_disconnect_by_func (self->priv->slave,
- G_CALLBACK (on_slave_stopped), self);
- gdm_slave_stop (self->priv->slave);
- g_object_unref (self->priv->slave);
- self->priv->slave = NULL;
- }
+ g_timer_stop (self->priv->server_timer);
if (self->priv->user_access_file != NULL) {
gdm_display_access_file_close (self->priv->user_access_file);
@@ -804,7 +764,7 @@ gdm_display_unmanage (GdmDisplay *self)
self->priv->access_file = NULL;
}
- elapsed = g_timer_elapsed (self->priv->slave_timer, NULL);
+ elapsed = g_timer_elapsed (self->priv->server_timer, NULL);
if (elapsed < 3) {
g_warning ("GdmDisplay: display lasted %lf seconds", elapsed);
_gdm_display_set_status (self, GDM_DISPLAY_FAILED);
@@ -920,13 +880,6 @@ _gdm_display_set_is_local (GdmDisplay *self,
}
static void
-_gdm_display_set_slave_type (GdmDisplay *self,
- GType type)
-{
- self->priv->slave_type = type;
-}
-
-static void
_gdm_display_set_launch_environment (GdmDisplay *self,
GdmLaunchEnvironment *launch_environment)
{
@@ -990,9 +943,6 @@ gdm_display_set_property (GObject *object,
case PROP_ALLOW_TIMED_LOGIN:
_gdm_display_set_allow_timed_login (self, g_value_get_boolean (value));
break;
- case PROP_SLAVE_TYPE:
- _gdm_display_set_slave_type (self, g_value_get_gtype (value));
- break;
case PROP_LAUNCH_ENVIRONMENT:
_gdm_display_set_launch_environment (self, g_value_get_object (value));
break;
@@ -1047,9 +997,6 @@ gdm_display_get_property (GObject *object,
case PROP_IS_LOCAL:
g_value_set_boolean (value, self->priv->is_local);
break;
- case PROP_SLAVE_TYPE:
- g_value_set_gtype (value, self->priv->slave_type);
- break;
case PROP_LAUNCH_ENVIRONMENT:
g_value_set_object (value, self->priv->launch_environment);
break;
@@ -1373,7 +1320,6 @@ gdm_display_dispose (GObject *object)
g_assert (self->priv->status == GDM_DISPLAY_FINISHED ||
self->priv->status == GDM_DISPLAY_FAILED);
- g_assert (self->priv->slave == NULL);
g_assert (self->priv->user_access_file == NULL);
g_assert (self->priv->access_file == NULL);
@@ -1496,13 +1442,6 @@ gdm_display_class_init (GdmDisplayClass *klass)
GDM_TYPE_LAUNCH_ENVIRONMENT,
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
- PROP_SLAVE_TYPE,
- g_param_spec_gtype ("slave-type",
- "slave type",
- "slave type",
- GDM_TYPE_SIMPLE_SLAVE,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
- g_object_class_install_property (object_class,
PROP_STATUS,
g_param_spec_int ("status",
"status",
@@ -1522,7 +1461,7 @@ gdm_display_init (GdmDisplay *self)
self->priv = GDM_DISPLAY_GET_PRIVATE (self);
self->priv->creation_time = time (NULL);
- self->priv->slave_timer = g_timer_new ();
+ self->priv->server_timer = g_timer_new ();
}
static void
@@ -1557,8 +1496,8 @@ gdm_display_finalize (GObject *object)
g_object_unref (self->priv->user_access_file);
}
- if (self->priv->slave_timer != NULL) {
- g_timer_destroy (self->priv->slave_timer);
+ if (self->priv->server_timer != NULL) {
+ g_timer_destroy (self->priv->server_timer);
}
G_OBJECT_CLASS (gdm_display_parent_class)->finalize (object);
@@ -1590,13 +1529,25 @@ on_launch_environment_session_started (GdmLaunchEnvironment *launch_environment,
}
static void
+self_destruct (GdmDisplay *self)
+{
+ g_object_ref (self);
+ if (gdm_display_get_status (self) == GDM_DISPLAY_MANAGED) {
+ gdm_display_unmanage (self);
+ }
+
+ if (gdm_display_get_status (self) != GDM_DISPLAY_FINISHED) {
+ queue_finish (self);
+ }
+ g_object_unref (self);
+}
+
+static void
on_launch_environment_session_stopped (GdmLaunchEnvironment *launch_environment,
GdmDisplay *self)
{
g_debug ("GdmDisplay: Greeter stopped");
- gdm_slave_stop (self->priv->slave);
-
- g_clear_object (&self->priv->launch_environment);
+ self_destruct (self);
}
static void
@@ -1605,7 +1556,7 @@ on_launch_environment_session_exited (GdmLaunchEnvironment *launch_environment,
GdmDisplay *self)
{
g_debug ("GdmDisplay: Greeter exited: %d", code);
- gdm_slave_stop (self->priv->slave);
+ self_destruct (self);
}
static void
@@ -1614,7 +1565,7 @@ on_launch_environment_session_died (GdmLaunchEnvironment *launch_environment,
GdmDisplay *self)
{
g_debug ("GdmDisplay: Greeter died: %d", signal);
- gdm_slave_stop (self->priv->slave);
+ self_destruct (self);
}
static gboolean
@@ -1778,6 +1729,22 @@ void
gdm_display_stop_greeter_session (GdmDisplay *self)
{
if (self->priv->launch_environment != NULL) {
+
+ g_signal_handlers_disconnect_by_func (self->priv->launch_environment,
+ G_CALLBACK (on_launch_environment_session_opened),
+ self);
+ g_signal_handlers_disconnect_by_func (self->priv->launch_environment,
+ G_CALLBACK (on_launch_environment_session_started),
+ self);
+ g_signal_handlers_disconnect_by_func (self->priv->launch_environment,
+ G_CALLBACK (on_launch_environment_session_stopped),
+ self);
+ g_signal_handlers_disconnect_by_func (self->priv->launch_environment,
+ G_CALLBACK (on_launch_environment_session_exited),
+ self);
+ g_signal_handlers_disconnect_by_func (self->priv->launch_environment,
+ G_CALLBACK (on_launch_environment_session_died),
+ self);
gdm_launch_environment_stop (self->priv->launch_environment);
g_clear_object (&self->priv->launch_environment);
}
@@ -1787,12 +1754,6 @@ gdm_display_stop_greeter_session (GdmDisplay *self)
}
}
-GdmSlave *
-gdm_display_get_slave (GdmDisplay *self)
-{
- return self->priv->slave;
-}
-
static void
gdm_display_set_windowpath (GdmDisplay *self)
{