diff options
author | Brian Cameron <brian.cameron@oracle.com> | 2012-06-21 20:23:26 -0500 |
---|---|---|
committer | Brian Cameron <brian.cameron@oracle.com> | 2012-06-21 20:23:26 -0500 |
commit | 0d8f04483f4a803d43f0dfc99bf8120c4d268fcc (patch) | |
tree | d4e41a75542f14d526edd505a8bd579eab2a5105 | |
parent | 1993e35b8202b30762f76a34c1a9afc24bc4076d (diff) | |
download | gdm-0d8f04483f4a803d43f0dfc99bf8120c4d268fcc.tar.gz |
The GDM chooser will leak a file descriptor for the auth file
each time the chooser is restarted.
This commit plugs the leak in a similar way to
commit 0c34aa7949bc24a2a8b3217cefb3c978b892591b
but for the chooser instead of remote greeters.
http://git.gnome.org/browse/gdm/commit/daemon/gdm-xdmcp-chooser-display.c?id=0af2a338de4273d6baba4157e4b69e22d97f07c5
-rw-r--r-- | daemon/gdm-xdmcp-chooser-display.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/daemon/gdm-xdmcp-chooser-display.c b/daemon/gdm-xdmcp-chooser-display.c index f7b5a0be..4a2b87a7 100644 --- a/daemon/gdm-xdmcp-chooser-display.c +++ b/daemon/gdm-xdmcp-chooser-display.c @@ -68,6 +68,7 @@ static guint signals [LAST_SIGNAL] = { 0, }; static void gdm_xdmcp_chooser_display_class_init (GdmXdmcpChooserDisplayClass *klass); static void gdm_xdmcp_chooser_display_init (GdmXdmcpChooserDisplay *xdmcp_chooser_display); static void gdm_xdmcp_chooser_display_finalize (GObject *object); +static gboolean gdm_xdmcp_chooser_display_finish (GdmDisplay *display); G_DEFINE_TYPE (GdmXdmcpChooserDisplay, gdm_xdmcp_chooser_display, GDM_TYPE_XDMCP_DISPLAY) @@ -165,6 +166,7 @@ gdm_xdmcp_chooser_display_class_init (GdmXdmcpChooserDisplayClass *klass) display_class->manage = gdm_xdmcp_chooser_display_manage; display_class->set_slave_bus_name = gdm_xdmcp_chooser_display_set_slave_bus_name; + display_class->finish = gdm_xdmcp_chooser_display_finish; signals [HOSTNAME_SELECTED] = g_signal_new ("hostname-selected", @@ -209,6 +211,18 @@ gdm_xdmcp_chooser_display_finalize (GObject *object) G_OBJECT_CLASS (gdm_xdmcp_chooser_display_parent_class)->finalize (object); } +static gboolean +gdm_xdmcp_chooser_display_finish (GdmDisplay *display) +{ + g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE); + + GDM_DISPLAY_CLASS (gdm_xdmcp_chooser_display_parent_class)->finish (display); + + gdm_display_unmanage (display); + + return TRUE; +} + GdmDisplay * gdm_xdmcp_chooser_display_new (const char *hostname, int number, |