diff --git a/.cvsignore b/.cvsignore index bb165a1..7686398 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -gdm-2.25.2.tar.bz2 +gdm-2.26.0.tar.bz2 diff --git a/gdm-2.24.0-force-active-vt.patch b/gdm-2.24.0-force-active-vt.patch deleted file mode 100644 index 11a9c55..0000000 --- a/gdm-2.24.0-force-active-vt.patch +++ /dev/null @@ -1,433 +0,0 @@ -diff -ur gdm-2.24.0/configure.ac new/configure.ac ---- gdm-2.24.0/configure.ac 2008-09-22 13:01:25.000000000 -0400 -+++ new/configure.ac 2008-09-30 22:32:05.000000000 -0400 -@@ -1311,6 +1311,23 @@ - AC_SUBST(GDM_XAUTH_DIR) - - dnl --------------------------------------------------------------------------- -+dnl - Directory to spool events from other processes -+dnl --------------------------------------------------------------------------- -+ -+AC_ARG_WITH(spool-dir, -+ AS_HELP_STRING([--with-spool-dir=], -+ [spool directory])) -+ -+if ! test -z "$with_spool_dir"; then -+ GDM_SPOOL_DIR=$with_spool_dir -+else -+ GDM_SPOOL_DIR=${localstatedir}/spool/gdm -+fi -+ -+AC_SUBST(GDM_SPOOL_DIR) -+ -+ -+dnl --------------------------------------------------------------------------- - dnl - Finish - dnl --------------------------------------------------------------------------- - -diff -ur gdm-2.24.0/daemon/gdm-display.c new/daemon/gdm-display.c ---- gdm-2.24.0/daemon/gdm-display.c 2008-09-22 13:01:22.000000000 -0400 -+++ new/daemon/gdm-display.c 2008-10-15 17:03:39.000000000 -0400 -@@ -62,7 +62,9 @@ - gsize x11_cookie_size; - GdmDisplayAccessFile *access_file; - -- gboolean is_local; -+ guint is_local : 1; -+ guint force_active_vt : 1; -+ - guint finish_idle_id; - - GdmSlaveProxy *slave_proxy; -@@ -81,6 +83,7 @@ - PROP_X11_COOKIE, - PROP_X11_AUTHORITY_FILE, - PROP_IS_LOCAL, -+ PROP_FORCE_ACTIVE_VT, - PROP_SLAVE_COMMAND, - }; - -@@ -491,9 +494,10 @@ - gdm_slave_proxy_set_log_path (display->priv->slave_proxy, log_path); - g_free (log_path); - -- command = g_strdup_printf ("%s --display-id %s", -+ command = g_strdup_printf ("%s --display-id %s %s", - display->priv->slave_command, -- display->priv->id); -+ display->priv->id, -+ display->priv->force_active_vt? "--force-active-vt" : ""); - gdm_slave_proxy_set_command (display->priv->slave_proxy, command); - g_free (command); - -@@ -702,6 +706,13 @@ - } - - static void -+_gdm_display_set_force_active_vt (GdmDisplay *display, -+ gboolean force_active_vt) -+{ -+ display->priv->force_active_vt = force_active_vt; -+} -+ -+static void - _gdm_display_set_slave_command (GdmDisplay *display, - const char *command) - { -@@ -744,6 +755,9 @@ - case PROP_IS_LOCAL: - _gdm_display_set_is_local (self, g_value_get_boolean (value)); - break; -+ case PROP_FORCE_ACTIVE_VT: -+ _gdm_display_set_force_active_vt (self, g_value_get_boolean (value)); -+ break; - case PROP_SLAVE_COMMAND: - _gdm_display_set_slave_command (self, g_value_get_string (value)); - break; -@@ -792,6 +806,9 @@ - case PROP_IS_LOCAL: - g_value_set_boolean (value, self->priv->is_local); - break; -+ case PROP_FORCE_ACTIVE_VT: -+ g_value_set_boolean (value, self->priv->force_active_vt); -+ break; - case PROP_SLAVE_COMMAND: - g_value_set_string (value, self->priv->slave_command); - break; -@@ -960,6 +977,13 @@ - NULL, - TRUE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); -+ g_object_class_install_property (object_class, -+ PROP_FORCE_ACTIVE_VT, -+ g_param_spec_boolean ("force-active-vt", -+ NULL, -+ NULL, -+ FALSE, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property (object_class, - PROP_SLAVE_COMMAND, -diff -ur gdm-2.24.0/daemon/gdm-server.c new/daemon/gdm-server.c ---- gdm-2.24.0/daemon/gdm-server.c 2008-09-22 13:01:22.000000000 -0400 -+++ new/daemon/gdm-server.c 2008-10-15 16:24:46.000000000 -0400 -@@ -34,6 +34,8 @@ - #include - #include - -+#include -+ - #include - #include - #include -@@ -663,6 +665,44 @@ - return ret; - } - -+static int -+get_active_vt (void) -+{ -+ int console_fd; -+ struct vt_stat console_state = { 0 }; -+ -+ console_fd = open ("/dev/tty0", O_RDONLY | O_NOCTTY); -+ -+ if (console_fd < 0) { -+ goto out; -+ } -+ -+ if (ioctl (console_fd, VT_GETSTATE, &console_state) < 0) { -+ goto out; -+ } -+ -+out: -+ if (console_fd >= 0) { -+ close (console_fd); -+ } -+ -+ return console_state.v_active; -+} -+ -+static char * -+get_active_vt_as_string (void) -+{ -+ int vt; -+ -+ vt = get_active_vt (); -+ -+ if (vt <= 0) { -+ return NULL; -+ } -+ -+ return g_strdup_printf ("vt%d", vt); -+} -+ - /** - * gdm_server_start: - * @disp: Pointer to a GdmDisplay structure -@@ -681,6 +721,21 @@ - return res; - } - -+gboolean -+gdm_server_start_on_active_vt (GdmServer *server) -+{ -+ gboolean res; -+ char *vt; -+ -+ g_free (server->priv->command); -+ server->priv->command = g_strdup (X_SERVER " -nr -verbose"); -+ vt = get_active_vt_as_string (); -+ res = gdm_server_spawn (server, vt); -+ g_free (vt); -+ -+ return res; -+} -+ - static void - server_died (GdmServer *server) - { -diff -ur gdm-2.24.0/daemon/gdm-server.h new/daemon/gdm-server.h ---- gdm-2.24.0/daemon/gdm-server.h 2008-07-10 11:07:42.000000000 -0400 -+++ new/daemon/gdm-server.h 2008-10-15 16:21:36.000000000 -0400 -@@ -56,6 +56,7 @@ - GdmServer * gdm_server_new (const char *display_id, - const char *auth_file); - gboolean gdm_server_start (GdmServer *server); -+gboolean gdm_server_start_on_active_vt (GdmServer *server); - gboolean gdm_server_stop (GdmServer *server); - char * gdm_server_get_display_device (GdmServer *server); - -diff -ur gdm-2.24.0/daemon/gdm-simple-slave.c new/daemon/gdm-simple-slave.c ---- gdm-2.24.0/daemon/gdm-simple-slave.c 2008-09-22 13:01:22.000000000 -0400 -+++ new/daemon/gdm-simple-slave.c 2008-10-15 16:29:48.000000000 -0400 -@@ -84,6 +84,7 @@ - - enum { - PROP_0, -+ FORCE_ACTIVE_VT - }; - - static void gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass); -@@ -1021,11 +1031,13 @@ - char *display_name; - char *auth_file; - gboolean display_is_local; -+ gboolean force_active_vt; - - g_object_get (slave, - "display-is-local", &display_is_local, - "display-name", &display_name, - "display-x11-authority-file", &auth_file, -+ "force-active-vt", &force_active_vt, - NULL); - - /* if this is local display start a server if one doesn't -@@ -1057,7 +1069,10 @@ - G_CALLBACK (on_server_ready), - slave); - -- res = gdm_server_start (slave->priv->server); -+ if (force_active_vt) -+ res = gdm_server_start_on_active_vt (slave->priv->server); -+ else -+ res = gdm_server_start (slave->priv->server); - if (! res) { - g_warning (_("Could not start the X " - "server (your graphical environment) " -@@ -1207,12 +1222,14 @@ - } - - GdmSlave * --gdm_simple_slave_new (const char *id) -+gdm_simple_slave_new (const char *id, -+ gboolean force_active_vt) - { - GObject *object; - - object = g_object_new (GDM_TYPE_SIMPLE_SLAVE, - "display-id", id, -+ "force-active-vt", force_active_vt, - NULL); - - return GDM_SLAVE (object); -diff -ur gdm-2.24.0/daemon/gdm-simple-slave.h new/daemon/gdm-simple-slave.h ---- gdm-2.24.0/daemon/gdm-simple-slave.h 2008-07-10 11:07:42.000000000 -0400 -+++ new/daemon/gdm-simple-slave.h 2008-10-15 16:03:43.000000000 -0400 -@@ -48,7 +48,8 @@ - } GdmSimpleSlaveClass; - - GType gdm_simple_slave_get_type (void); --GdmSlave * gdm_simple_slave_new (const char *id); -+GdmSlave * gdm_simple_slave_new (const char *id, -+ gboolean force_active_vt); - - G_END_DECLS - -diff -ur gdm-2.24.0/daemon/gdm-slave.c new/daemon/gdm-slave.c ---- gdm-2.24.0/daemon/gdm-slave.c 2008-07-28 22:40:42.000000000 -0400 -+++ new/daemon/gdm-slave.c 2008-10-15 16:31:33.000000000 -0400 -@@ -83,6 +84,7 @@ - char *display_hostname; - gboolean display_is_local; - gboolean display_is_parented; -+ gboolean force_active_vt; - char *display_seat_id; - char *display_x11_authority_file; - char *parent_display_name; -@@ -99,6 +101,7 @@ - PROP_DISPLAY_NUMBER, - PROP_DISPLAY_HOSTNAME, - PROP_DISPLAY_IS_LOCAL, -+ PROP_FORCE_ACTIVE_VT, - PROP_DISPLAY_SEAT_ID, - PROP_DISPLAY_X11_AUTHORITY_FILE - }; -@@ -1110,6 +1184,13 @@ - } - - static void -+_gdm_slave_set_force_active_vt (GdmSlave *slave, -+ gboolean force_active_vt) -+{ -+ slave->priv->force_active_vt = force_active_vt; -+} -+ -+static void - gdm_slave_set_property (GObject *object, - guint prop_id, - const GValue *value, -@@ -1141,6 +1222,9 @@ - case PROP_DISPLAY_IS_LOCAL: - _gdm_slave_set_display_is_local (self, g_value_get_boolean (value)); - break; -+ case PROP_FORCE_ACTIVE_VT: -+ _gdm_slave_set_force_active_vt (self, g_value_get_boolean (value)); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -1179,6 +1263,9 @@ - case PROP_DISPLAY_IS_LOCAL: - g_value_set_boolean (value, self->priv->display_is_local); - break; -+ case PROP_FORCE_ACTIVE_VT: -+ g_value_set_boolean (value, self->priv->force_active_vt); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; -@@ -1304,6 +1391,14 @@ - TRUE, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - -+ g_object_class_install_property (object_class, -+ PROP_FORCE_ACTIVE_VT, -+ g_param_spec_boolean ("force-active-vt", -+ "Force Active VT", -+ "Force display to active VT", -+ TRUE, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); -+ - signals [STOPPED] = - g_signal_new ("stopped", - G_TYPE_FROM_CLASS (object_class), -diff -ur gdm-2.24.0/daemon/gdm-static-display.c new/daemon/gdm-static-display.c ---- gdm-2.24.0/daemon/gdm-static-display.c 2008-07-10 11:07:42.000000000 -0400 -+++ new/daemon/gdm-static-display.c 2008-10-15 16:24:38.000000000 -0400 -@@ -86,10 +86,27 @@ - } - - static gboolean -+triggered_to_force_display_on_active_vt (void) -+{ -+ gboolean should_force_display_on_active_vt; -+ -+ should_force_display_on_active_vt = g_file_test (GDM_SPOOL_DIR "/force-display-on-active-vt", -+ G_FILE_TEST_EXISTS); -+ g_unlink (GDM_SPOOL_DIR "/force-display-on-active-vt"); -+ -+ return should_force_display_on_active_vt; -+} -+ -+static gboolean - gdm_static_display_manage (GdmDisplay *display) - { - g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE); - -+ if (triggered_to_force_display_on_active_vt ()) { -+ g_object_set (display, "force-active-vt", TRUE, NULL); -+ } else { -+ g_object_set (display, "force-active-vt", FALSE, NULL); -+ } - GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->manage (display); - - return TRUE; -diff -ur gdm-2.24.0/daemon/Makefile.am new/daemon/Makefile.am ---- gdm-2.24.0/daemon/Makefile.am 2008-08-01 12:39:12.000000000 -0400 -+++ new/daemon/Makefile.am 2008-09-30 22:32:05.000000000 -0400 -@@ -16,6 +16,7 @@ - -DPIXMAPDIR=\"$(pixmapdir)\" \ - -DSBINDIR=\"$(sbindir)\" \ - -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ -+ -DGDM_SPOOL_DIR=\"$(GDM_SPOOL_DIR)\" \ - -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ - -DGDM_DEFAULTS_CONF=\"$(GDM_DEFAULTS_CONF)\" \ - -DGDM_CUSTOM_CONF=\"$(GDM_CUSTOM_CONF)\" \ -diff -ur gdm-2.24.0/daemon/simple-slave-main.c new/daemon/simple-slave-main.c ---- gdm-2.24.0/daemon/simple-slave-main.c 2008-08-21 00:31:47.000000000 -0400 -+++ new/daemon/simple-slave-main.c 2008-10-15 16:25:38.000000000 -0400 -@@ -171,10 +171,12 @@ - GdmSlave *slave; - static char *display_id = NULL; - static gboolean debug = FALSE; -+ static gboolean force_active_vt = FALSE; - GdmSignalHandler *signal_handler; - static GOptionEntry entries [] = { - { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL }, - { "display-id", 0, 0, G_OPTION_ARG_STRING, &display_id, N_("Display ID"), N_("id") }, -+ { "force-active-vt", 0, 0, G_OPTION_ARG_NONE, &force_active_vt, N_("Force X to start on active vt"), NULL }, - { NULL } - }; - -@@ -231,7 +233,7 @@ - gdm_signal_handler_add (signal_handler, SIGUSR1, signal_cb, NULL); - gdm_signal_handler_add (signal_handler, SIGUSR2, signal_cb, NULL); - -- slave = gdm_simple_slave_new (display_id); -+ slave = gdm_simple_slave_new (display_id, force_active_vt); - if (slave == NULL) { - goto out; - } -diff -ur gdm-2.24.0/data/Makefile.am new/data/Makefile.am ---- gdm-2.24.0/data/Makefile.am 2008-09-22 13:01:23.000000000 -0400 -+++ new/data/Makefile.am 2008-09-30 22:32:05.000000000 -0400 -@@ -13,6 +13,7 @@ - postlogindir = $(gdmconfdir)/PostLogin - workingdir = $(GDM_WORKING_DIR) - xauthdir = $(GDM_XAUTH_DIR) -+spooldir = $(GDM_SPOOL_DIR) - - if OS_SOLARIS - DISTRO_XSESSION=$(srcdir)/Xsession.solaris -@@ -132,6 +133,7 @@ - -rf \ - $(DESTDIR)$(workingdir)/.gconf.mandatory \ - $(DESTDIR)$(xauthdir) -+ $(DESTDIR)$(spooldir) - - install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path - if test '!' -d $(DESTDIR)$(gdmconfdir); then \ -@@ -219,6 +221,12 @@ - chown root:gdm $(DESTDIR)$(workingdir) || : ; \ - fi - -+ if test '!' -d $(DESTDIR)$(spooldir); then \ -+ $(mkinstalldirs) $(DESTDIR)$(spooldir); \ -+ chmod 775 $(DESTDIR)$(spooldir); \ -+ chown root:gdm $(DESTDIR)$(spooldir) || : ; \ -+ fi -+ - $(INSTALL_DATA) $(srcdir)/gconf.path $(DESTDIR)$(workingdir)/.gconf.path - gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --recursive-unset / - gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --load $(srcdir)/session-setup.entries diff --git a/gdm-2.25.2-multistack-but-boring.patch b/gdm-2.25.2-multistack-but-boring.patch index 8998317..948a7d9 100644 --- a/gdm-2.25.2-multistack-but-boring.patch +++ b/gdm-2.25.2-multistack-but-boring.patch @@ -7045,7 +7045,7 @@ diff -up gdm-2.25.2/gui/simple-greeter/gdm-greeter-login-window.glade.multistack 0 -@@ -699,17 +673,11 @@ +@@ -699,16 +673,11 @@ @@ -7059,7 +7059,6 @@ diff -up gdm-2.25.2/gui/simple-greeter/gdm-greeter-login-window.glade.multistack - 0 - - True -- - True + 0 + 0 @@ -7705,7 +7704,7 @@ diff -up gdm-2.25.2/gui/simple-greeter/gdm-greeter-session.c.multistack-but-bori + gdm_greeter_client_call_start_session_when_ready (session->priv->client, service_name, TRUE); } - static void + static int @@ -321,7 +358,10 @@ toggle_login_window (GdmGreeterSession * is_local = gdm_greeter_client_get_display_is_local (session->priv->client); g_debug ("GdmGreeterSession: Starting a login window local:%d", is_local); diff --git a/gdm-2.26.0-force-active-vt.patch b/gdm-2.26.0-force-active-vt.patch new file mode 100644 index 0000000..c8643e8 --- /dev/null +++ b/gdm-2.26.0-force-active-vt.patch @@ -0,0 +1,433 @@ +diff -up gdm-2.26.0/configure.ac.force-active-vt gdm-2.26.0/configure.ac +--- gdm-2.26.0/configure.ac.force-active-vt 2009-03-13 00:00:28.000000000 -0400 ++++ gdm-2.26.0/configure.ac 2009-03-16 14:29:02.644213240 -0400 +@@ -1231,6 +1231,23 @@ fi + AC_SUBST(GDM_XAUTH_DIR) + + dnl --------------------------------------------------------------------------- ++dnl - Directory to spool events from other processes ++dnl --------------------------------------------------------------------------- ++ ++AC_ARG_WITH(spool-dir, ++ AS_HELP_STRING([--with-spool-dir=], ++ [spool directory])) ++ ++if ! test -z "$with_spool_dir"; then ++ GDM_SPOOL_DIR=$with_spool_dir ++else ++ GDM_SPOOL_DIR=${localstatedir}/spool/gdm ++fi ++ ++AC_SUBST(GDM_SPOOL_DIR) ++ ++ ++dnl --------------------------------------------------------------------------- + dnl - Finish + dnl --------------------------------------------------------------------------- + +diff -up gdm-2.26.0/daemon/gdm-display.c.force-active-vt gdm-2.26.0/daemon/gdm-display.c +--- gdm-2.26.0/daemon/gdm-display.c.force-active-vt 2009-02-19 21:45:13.000000000 -0500 ++++ gdm-2.26.0/daemon/gdm-display.c 2009-03-16 14:29:02.646213754 -0400 +@@ -65,7 +65,9 @@ struct GdmDisplayPrivate + gsize x11_cookie_size; + GdmDisplayAccessFile *access_file; + +- gboolean is_local; ++ guint is_local : 1; ++ guint force_active_vt : 1; ++ + guint finish_idle_id; + + GdmSlaveProxy *slave_proxy; +@@ -84,6 +86,7 @@ enum { + PROP_X11_COOKIE, + PROP_X11_AUTHORITY_FILE, + PROP_IS_LOCAL, ++ PROP_FORCE_ACTIVE_VT, + PROP_SLAVE_COMMAND, + }; + +@@ -578,9 +581,10 @@ gdm_display_real_prepare (GdmDisplay *di + gdm_slave_proxy_set_log_path (display->priv->slave_proxy, log_path); + g_free (log_path); + +- command = g_strdup_printf ("%s --display-id %s", ++ command = g_strdup_printf ("%s --display-id %s %s", + display->priv->slave_command, +- display->priv->id); ++ display->priv->id, ++ display->priv->force_active_vt? "--force-active-vt" : ""); + gdm_slave_proxy_set_command (display->priv->slave_proxy, command); + g_free (command); + +@@ -831,6 +835,13 @@ _gdm_display_set_is_local (GdmDisplay + } + + static void ++_gdm_display_set_force_active_vt (GdmDisplay *display, ++ gboolean force_active_vt) ++{ ++ display->priv->force_active_vt = force_active_vt; ++} ++ ++static void + _gdm_display_set_slave_command (GdmDisplay *display, + const char *command) + { +@@ -873,6 +884,9 @@ gdm_display_set_property (GObject + case PROP_IS_LOCAL: + _gdm_display_set_is_local (self, g_value_get_boolean (value)); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ _gdm_display_set_force_active_vt (self, g_value_get_boolean (value)); ++ break; + case PROP_SLAVE_COMMAND: + _gdm_display_set_slave_command (self, g_value_get_string (value)); + break; +@@ -921,6 +935,9 @@ gdm_display_get_property (GObject + case PROP_IS_LOCAL: + g_value_set_boolean (value, self->priv->is_local); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ g_value_set_boolean (value, self->priv->force_active_vt); ++ break; + case PROP_SLAVE_COMMAND: + g_value_set_string (value, self->priv->slave_command); + break; +@@ -1091,6 +1108,13 @@ gdm_display_class_init (GdmDisplayClass + NULL, + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); ++ g_object_class_install_property (object_class, ++ PROP_FORCE_ACTIVE_VT, ++ g_param_spec_boolean ("force-active-vt", ++ NULL, ++ NULL, ++ FALSE, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + g_object_class_install_property (object_class, + PROP_SLAVE_COMMAND, +diff -up gdm-2.26.0/daemon/gdm-server.c.force-active-vt gdm-2.26.0/daemon/gdm-server.c +--- gdm-2.26.0/daemon/gdm-server.c.force-active-vt 2009-02-19 21:45:13.000000000 -0500 ++++ gdm-2.26.0/daemon/gdm-server.c 2009-03-16 14:29:02.647212475 -0400 +@@ -34,6 +34,8 @@ + #include + #include + ++#include ++ + #include + #include + #include +@@ -663,6 +665,44 @@ gdm_server_spawn (GdmServer *server, + return ret; + } + ++static int ++get_active_vt (void) ++{ ++ int console_fd; ++ struct vt_stat console_state = { 0 }; ++ ++ console_fd = open ("/dev/tty0", O_RDONLY | O_NOCTTY); ++ ++ if (console_fd < 0) { ++ goto out; ++ } ++ ++ if (ioctl (console_fd, VT_GETSTATE, &console_state) < 0) { ++ goto out; ++ } ++ ++out: ++ if (console_fd >= 0) { ++ close (console_fd); ++ } ++ ++ return console_state.v_active; ++} ++ ++static char * ++get_active_vt_as_string (void) ++{ ++ int vt; ++ ++ vt = get_active_vt (); ++ ++ if (vt <= 0) { ++ return NULL; ++ } ++ ++ return g_strdup_printf ("vt%d", vt); ++} ++ + /** + * gdm_server_start: + * @disp: Pointer to a GdmDisplay structure +@@ -681,6 +721,21 @@ gdm_server_start (GdmServer *server) + return res; + } + ++gboolean ++gdm_server_start_on_active_vt (GdmServer *server) ++{ ++ gboolean res; ++ char *vt; ++ ++ g_free (server->priv->command); ++ server->priv->command = g_strdup (X_SERVER " -nr -verbose"); ++ vt = get_active_vt_as_string (); ++ res = gdm_server_spawn (server, vt); ++ g_free (vt); ++ ++ return res; ++} ++ + static void + server_died (GdmServer *server) + { +diff -up gdm-2.26.0/daemon/gdm-server.h.force-active-vt gdm-2.26.0/daemon/gdm-server.h +--- gdm-2.26.0/daemon/gdm-server.h.force-active-vt 2009-02-19 21:45:13.000000000 -0500 ++++ gdm-2.26.0/daemon/gdm-server.h 2009-03-16 14:29:02.649191269 -0400 +@@ -56,6 +56,7 @@ GType gdm_server_get_type + GdmServer * gdm_server_new (const char *display_id, + const char *auth_file); + gboolean gdm_server_start (GdmServer *server); ++gboolean gdm_server_start_on_active_vt (GdmServer *server); + gboolean gdm_server_stop (GdmServer *server); + char * gdm_server_get_display_device (GdmServer *server); + +diff -up gdm-2.26.0/daemon/gdm-simple-slave.c.force-active-vt gdm-2.26.0/daemon/gdm-simple-slave.c +--- gdm-2.26.0/daemon/gdm-simple-slave.c.force-active-vt 2009-02-19 21:45:13.000000000 -0500 ++++ gdm-2.26.0/daemon/gdm-simple-slave.c 2009-03-16 14:29:02.652215508 -0400 +@@ -88,6 +88,7 @@ struct GdmSimpleSlavePrivate + + enum { + PROP_0, ++ FORCE_ACTIVE_VT + }; + + static void gdm_simple_slave_class_init (GdmSimpleSlaveClass *klass); +@@ -1064,11 +1065,13 @@ gdm_simple_slave_run (GdmSimpleSlave *sl + char *display_name; + char *auth_file; + gboolean display_is_local; ++ gboolean force_active_vt; + + g_object_get (slave, + "display-is-local", &display_is_local, + "display-name", &display_name, + "display-x11-authority-file", &auth_file, ++ "force-active-vt", &force_active_vt, + NULL); + + /* if this is local display start a server if one doesn't +@@ -1100,7 +1103,10 @@ gdm_simple_slave_run (GdmSimpleSlave *sl + G_CALLBACK (on_server_ready), + slave); + +- res = gdm_server_start (slave->priv->server); ++ if (force_active_vt) ++ res = gdm_server_start_on_active_vt (slave->priv->server); ++ else ++ res = gdm_server_start (slave->priv->server); + if (! res) { + g_warning (_("Could not start the X " + "server (your graphical environment) " +@@ -1248,12 +1254,14 @@ gdm_simple_slave_finalize (GObject *obje + } + + GdmSlave * +-gdm_simple_slave_new (const char *id) ++gdm_simple_slave_new (const char *id, ++ gboolean force_active_vt) + { + GObject *object; + + object = g_object_new (GDM_TYPE_SIMPLE_SLAVE, + "display-id", id, ++ "force-active-vt", force_active_vt, + NULL); + + return GDM_SLAVE (object); +diff -up gdm-2.26.0/daemon/gdm-simple-slave.h.force-active-vt gdm-2.26.0/daemon/gdm-simple-slave.h +--- gdm-2.26.0/daemon/gdm-simple-slave.h.force-active-vt 2009-02-19 21:45:13.000000000 -0500 ++++ gdm-2.26.0/daemon/gdm-simple-slave.h 2009-03-16 14:29:02.655435299 -0400 +@@ -48,7 +48,8 @@ typedef struct + } GdmSimpleSlaveClass; + + GType gdm_simple_slave_get_type (void); +-GdmSlave * gdm_simple_slave_new (const char *id); ++GdmSlave * gdm_simple_slave_new (const char *id, ++ gboolean force_active_vt); + + G_END_DECLS + +diff -up gdm-2.26.0/daemon/gdm-slave.c.force-active-vt gdm-2.26.0/daemon/gdm-slave.c +--- gdm-2.26.0/daemon/gdm-slave.c.force-active-vt 2009-02-19 21:45:13.000000000 -0500 ++++ gdm-2.26.0/daemon/gdm-slave.c 2009-03-16 14:29:02.692436090 -0400 +@@ -83,6 +83,7 @@ struct GdmSlavePrivate + char *display_hostname; + gboolean display_is_local; + gboolean display_is_parented; ++ gboolean force_active_vt; + char *display_seat_id; + char *display_x11_authority_file; + char *parent_display_name; +@@ -99,6 +100,7 @@ enum { + PROP_DISPLAY_NUMBER, + PROP_DISPLAY_HOSTNAME, + PROP_DISPLAY_IS_LOCAL, ++ PROP_FORCE_ACTIVE_VT, + PROP_DISPLAY_SEAT_ID, + PROP_DISPLAY_X11_AUTHORITY_FILE + }; +@@ -1164,6 +1166,13 @@ _gdm_slave_set_display_is_local (GdmSlav + } + + static void ++_gdm_slave_set_force_active_vt (GdmSlave *slave, ++ gboolean force_active_vt) ++{ ++ slave->priv->force_active_vt = force_active_vt; ++} ++ ++static void + gdm_slave_set_property (GObject *object, + guint prop_id, + const GValue *value, +@@ -1195,6 +1204,9 @@ gdm_slave_set_property (GObject *ob + case PROP_DISPLAY_IS_LOCAL: + _gdm_slave_set_display_is_local (self, g_value_get_boolean (value)); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ _gdm_slave_set_force_active_vt (self, g_value_get_boolean (value)); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +@@ -1233,6 +1245,9 @@ gdm_slave_get_property (GObject *obje + case PROP_DISPLAY_IS_LOCAL: + g_value_set_boolean (value, self->priv->display_is_local); + break; ++ case PROP_FORCE_ACTIVE_VT: ++ g_value_set_boolean (value, self->priv->force_active_vt); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +@@ -1358,6 +1373,14 @@ gdm_slave_class_init (GdmSlaveClass *kla + TRUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + ++ g_object_class_install_property (object_class, ++ PROP_FORCE_ACTIVE_VT, ++ g_param_spec_boolean ("force-active-vt", ++ "Force Active VT", ++ "Force display to active VT", ++ TRUE, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); ++ + signals [STOPPED] = + g_signal_new ("stopped", + G_TYPE_FROM_CLASS (object_class), +diff -up gdm-2.26.0/daemon/gdm-static-display.c.force-active-vt gdm-2.26.0/daemon/gdm-static-display.c +--- gdm-2.26.0/daemon/gdm-static-display.c.force-active-vt 2009-03-11 11:00:52.000000000 -0400 ++++ gdm-2.26.0/daemon/gdm-static-display.c 2009-03-16 14:29:02.693447871 -0400 +@@ -86,10 +86,27 @@ gdm_static_display_remove_user_authoriza + } + + static gboolean ++triggered_to_force_display_on_active_vt (void) ++{ ++ gboolean should_force_display_on_active_vt; ++ ++ should_force_display_on_active_vt = g_file_test (GDM_SPOOL_DIR "/force-display-on-active-vt", ++ G_FILE_TEST_EXISTS); ++ g_unlink (GDM_SPOOL_DIR "/force-display-on-active-vt"); ++ ++ return should_force_display_on_active_vt; ++} ++ ++static gboolean + gdm_static_display_manage (GdmDisplay *display) + { + g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE); + ++ if (triggered_to_force_display_on_active_vt ()) { ++ g_object_set (display, "force-active-vt", TRUE, NULL); ++ } else { ++ g_object_set (display, "force-active-vt", FALSE, NULL); ++ } + GDM_DISPLAY_CLASS (gdm_static_display_parent_class)->manage (display); + + return TRUE; +diff -up gdm-2.26.0/daemon/Makefile.am.force-active-vt gdm-2.26.0/daemon/Makefile.am +--- gdm-2.26.0/daemon/Makefile.am.force-active-vt 2009-02-19 21:45:14.000000000 -0500 ++++ gdm-2.26.0/daemon/Makefile.am 2009-03-16 14:29:58.020476408 -0400 +@@ -14,6 +14,7 @@ AM_CPPFLAGS = \ + -DLOGDIR=\"$(logdir)\" \ + -DSBINDIR=\"$(sbindir)\" \ + -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ ++ -DGDM_SPOOL_DIR=\"$(GDM_SPOOL_DIR)\" \ + -DGDM_XAUTH_DIR=\"$(GDM_XAUTH_DIR)\" \ + -DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \ + $(DISABLE_DEPRECATED_CFLAGS) \ +diff -up gdm-2.26.0/daemon/simple-slave-main.c.force-active-vt gdm-2.26.0/daemon/simple-slave-main.c +--- gdm-2.26.0/daemon/simple-slave-main.c.force-active-vt 2009-03-16 11:59:33.000000000 -0400 ++++ gdm-2.26.0/daemon/simple-slave-main.c 2009-03-16 14:29:02.697437865 -0400 +@@ -174,10 +174,12 @@ main (int argc, + GdmSlave *slave; + static char *display_id = NULL; + static gboolean debug = FALSE; ++ static gboolean force_active_vt = FALSE; + GdmSignalHandler *signal_handler; + static GOptionEntry entries [] = { + { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL }, + { "display-id", 0, 0, G_OPTION_ARG_STRING, &display_id, N_("Display ID"), N_("id") }, ++ { "force-active-vt", 0, 0, G_OPTION_ARG_NONE, &force_active_vt, N_("Force X to start on active vt"), NULL }, + { NULL } + }; + +@@ -245,7 +247,7 @@ main (int argc, + gdm_signal_handler_add (signal_handler, SIGUSR1, signal_cb, NULL); + gdm_signal_handler_add (signal_handler, SIGUSR2, signal_cb, NULL); + +- slave = gdm_simple_slave_new (display_id); ++ slave = gdm_simple_slave_new (display_id, force_active_vt); + if (slave == NULL) { + goto out; + } +diff -up gdm-2.26.0/data/Makefile.am.force-active-vt gdm-2.26.0/data/Makefile.am +--- gdm-2.26.0/data/Makefile.am.force-active-vt 2009-02-19 21:45:14.000000000 -0500 ++++ gdm-2.26.0/data/Makefile.am 2009-03-16 14:30:39.953441112 -0400 +@@ -13,6 +13,7 @@ predir = $(gdmconfdir)/PreSession + postlogindir = $(gdmconfdir)/PostLogin + workingdir = $(GDM_WORKING_DIR) + xauthdir = $(GDM_XAUTH_DIR) ++spooldir = $(GDM_SPOOL_DIR) + + Xsession: $(srcdir)/Xsession.in + sed -e 's,[@]XSESSION_SHELL[@],$(XSESSION_SHELL),g' \ +@@ -122,6 +123,7 @@ uninstall-hook: + -rf \ + $(DESTDIR)$(workingdir)/.gconf.mandatory \ + $(DESTDIR)$(xauthdir) ++ $(DESTDIR)$(spooldir) + + install-data-hook: gdm.conf-custom Xsession Init PostSession PreSession gconf.path + if test '!' -d $(DESTDIR)$(gdmconfdir); then \ +@@ -209,6 +211,12 @@ install-data-hook: gdm.conf-custom Xsess + chown root:gdm $(DESTDIR)$(workingdir) || : ; \ + fi + ++ if test '!' -d $(DESTDIR)$(spooldir); then \ ++ $(mkinstalldirs) $(DESTDIR)$(spooldir); \ ++ chmod 775 $(DESTDIR)$(spooldir); \ ++ chown root:gdm $(DESTDIR)$(spooldir) || : ; \ ++ fi ++ + $(INSTALL_DATA) $(srcdir)/gconf.path $(DESTDIR)$(workingdir)/.gconf.path + gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --recursive-unset / + gconftool-2 --direct --config-source=xml:merged:$(DESTDIR)$(workingdir)/.gconf.mandatory --load $(srcdir)/session-setup.entries diff --git a/gdm.spec b/gdm.spec index 7b26815..2f8d3a8 100644 --- a/gdm.spec +++ b/gdm.spec @@ -14,8 +14,8 @@ Summary: The GNOME Display Manager Name: gdm -Version: 2.25.2 -Release: 20%{?dist} +Version: 2.26.0 +Release: 1%{?dist} Epoch: 1 License: GPLv2+ Group: User Interface/X @@ -82,7 +82,7 @@ BuildRequires: libxklavier-devel Provides: service(graphical-login) Requires: audit-libs >= %{libauditver} -Patch2: gdm-2.24.0-force-active-vt.patch +Patch2: gdm-2.26.0-force-active-vt.patch Patch3: gdm-2.23.92-save-root-window.patch Patch4: gdm-2.25.2-append-logs.patch @@ -124,7 +124,7 @@ multiple simulanteous logged in users. %patch14 -p1 -b .multistack-but-boring %patch15 -p1 -b .start-faster %patch16 -p1 -b .dont-depend-on-hostname -%patch17 -p1 -b .maybe-work-around-gcc-bug +#%patch17 -p1 -b .maybe-work-around-gcc-bug %patch99 -p1 -b .fedora-logo @@ -348,6 +348,10 @@ fi %{_datadir}/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml %changelog +* Mon Mar 16 2009 Ray Strode - 1:2.26.0-1 +- Update to 2.26.0 +- Drop gcc workaround. it might not be needed now. + * Sat Mar 14 2009 Ray Strode - 1:2.25.2-20 - Drop the use localhost patch because it broke things. Instead add authorization that doesn't depend on a hostname diff --git a/sources b/sources index d4a8165..2e832cb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -fa0754d0b79ec3b11367f72297ac3b87 gdm-2.25.2.tar.bz2 +b1a8db2f0e058d3c7b4c9a4600839a14 gdm-2.26.0.tar.bz2