r24309 - in /desktop/unstable/gdm3/debian: changelog patches/19_xserver_options.patch patches/20_endsession_respawn.patch patches/series rules
joss at users.alioth.debian.org
joss at users.alioth.debian.org
Sat May 8 12:02:11 UTC 2010
Author: joss
Date: Sat May 8 12:02:04 2010
New Revision: 24309
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=24309
Log:
* Pass -novtswitch to the X server options, so that it doesn’t switch
back to the original tty when being killed. This fixes a corner case
of user switching which is the original upstream reason for
introducing the broken behavior we fixed with
18_switch_kill_greeter.patch.
* 19_xserver_options.patch: new patch. Don’t ignore X_SERVER_OPTIONS.
* 20_endsession_respawn.patch: new patch. Respawn transient displays
when the user session is finished. In combination with
-novtswitch, it allows a unified interface where exiting a session
will always bring back to a login manager, without leaving unused
displays either.
Added:
desktop/unstable/gdm3/debian/patches/19_xserver_options.patch
desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch
Modified:
desktop/unstable/gdm3/debian/changelog
desktop/unstable/gdm3/debian/patches/series
desktop/unstable/gdm3/debian/rules
Modified: desktop/unstable/gdm3/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/changelog?rev=24309&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/changelog [utf-8] (original)
+++ desktop/unstable/gdm3/debian/changelog [utf-8] Sat May 8 12:02:04 2010
@@ -1,3 +1,19 @@
+gdm3 (2.30.2-3) UNRELEASED; urgency=low
+
+ * Pass -novtswitch to the X server options, so that it doesn’t switch
+ back to the original tty when being killed. This fixes a corner case
+ of user switching which is the original upstream reason for
+ introducing the broken behavior we fixed with
+ 18_switch_kill_greeter.patch.
+ * 19_xserver_options.patch: new patch. Don’t ignore X_SERVER_OPTIONS.
+ * 20_endsession_respawn.patch: new patch. Respawn transient displays
+ when the user session is finished. In combination with
+ -novtswitch, it allows a unified interface where exiting a session
+ will always bring back to a login manager, without leaving unused
+ displays either.
+
+ -- Josselin Mouette <joss at debian.org> Sat, 08 May 2010 10:24:52 +0200
+
gdm3 (2.30.2-2) unstable; urgency=low
* Pass X_PATH et al. through DEB_CONFIGURE_SCRIPT_ENV.
Added: desktop/unstable/gdm3/debian/patches/19_xserver_options.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/19_xserver_options.patch?rev=24309&op=file
==============================================================================
--- desktop/unstable/gdm3/debian/patches/19_xserver_options.patch (added)
+++ desktop/unstable/gdm3/debian/patches/19_xserver_options.patch [utf-8] Sat May 8 12:02:04 2010
@@ -1,0 +1,13 @@
+Index: gdm-2.30.2/daemon/gdm-server.c
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-server.c 2010-05-08 10:37:27.353612651 +0200
++++ gdm-2.30.2/daemon/gdm-server.c 2010-05-08 10:37:50.737110527 +0200
+@@ -1133,7 +1133,7 @@ gdm_server_init (GdmServer *server)
+ server->priv = GDM_SERVER_GET_PRIVATE (server);
+
+ server->priv->pid = -1;
+- server->priv->command = g_strdup (X_SERVER " -br -verbose");
++ server->priv->command = g_strdup (X_SERVER " -br -verbose " X_CONFIG_OPTIONS);
+ server->priv->log_dir = g_strdup (LOGDIR);
+
+ add_ready_handler (server);
Added: desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch?rev=24309&op=file
==============================================================================
--- desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch (added)
+++ desktop/unstable/gdm3/debian/patches/20_endsession_respawn.patch [utf-8] Sat May 8 12:02:04 2010
@@ -1,0 +1,219 @@
+Index: gdm-2.30.2/daemon/gdm-display.c
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-display.c 2010-05-08 12:53:57.313609813 +0200
++++ gdm-2.30.2/daemon/gdm-display.c 2010-05-08 13:04:40.885109412 +0200
+@@ -302,6 +302,32 @@ gdm_display_set_slave_bus_name (GdmDispl
+ return ret;
+ }
+
++static gboolean
++gdm_display_real_set_needs_respawn (GdmDisplay *display,
++ gboolean respawn,
++ GError **error)
++{
++ return TRUE;
++}
++
++gboolean
++gdm_display_set_needs_respawn (GdmDisplay *display,
++ gboolean respawn,
++ GError **error)
++{
++ gboolean ret;
++
++ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
++
++ g_debug ("GdmDisplay: %s respawn on display %s", respawn?"Enabling":"Disabling", display->priv->x11_display_name);
++
++ g_object_ref (display);
++ ret = GDM_DISPLAY_GET_CLASS (display)->set_needs_respawn (display, respawn, error);
++ g_object_unref (display);
++
++ return ret;
++}
++
+ static void
+ gdm_display_real_get_timed_login_details (GdmDisplay *display,
+ gboolean *enabledp,
+@@ -1019,6 +1045,7 @@ gdm_display_class_init (GdmDisplayClass
+ klass->add_user_authorization = gdm_display_real_add_user_authorization;
+ klass->remove_user_authorization = gdm_display_real_remove_user_authorization;
+ klass->set_slave_bus_name = gdm_display_real_set_slave_bus_name;
++ klass->set_needs_respawn = gdm_display_real_set_needs_respawn;
+ klass->get_timed_login_details = gdm_display_real_get_timed_login_details;
+ klass->prepare = gdm_display_real_prepare;
+ klass->manage = gdm_display_real_manage;
+Index: gdm-2.30.2/daemon/gdm-display.h
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-display.h 2010-05-08 12:53:57.357614223 +0200
++++ gdm-2.30.2/daemon/gdm-display.h 2010-05-08 13:41:13.865110143 +0200
+@@ -66,6 +66,9 @@ typedef struct
+ gboolean (*set_slave_bus_name) (GdmDisplay *display,
+ const char *name,
+ GError **error);
++ gboolean (*set_needs_respawn) (GdmDisplay *display,
++ gboolean respawn,
++ GError **error);
+ gboolean (*prepare) (GdmDisplay *display);
+ gboolean (*manage) (GdmDisplay *display);
+ gboolean (*finish) (GdmDisplay *display);
+@@ -140,6 +143,9 @@ gboolean gdm_display_remove_u
+ gboolean gdm_display_set_slave_bus_name (GdmDisplay *display,
+ const char *name,
+ GError **error);
++gboolean gdm_display_set_needs_respawn (GdmDisplay *display,
++ gboolean respawn,
++ GError **error);
+
+
+ G_END_DECLS
+Index: gdm-2.30.2/daemon/gdm-display.xml
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-display.xml 2010-05-08 12:53:57.405619210 +0200
++++ gdm-2.30.2/daemon/gdm-display.xml 2010-05-08 13:04:56.369117621 +0200
+@@ -35,6 +35,9 @@
+ <method name="SetSlaveBusName">
+ <arg name="name" direction="in" type="s"/>
+ </method>
++ <method name="SetNeedsRespawn">
++ <arg name="respawn" direction="in" type="b"/>
++ </method>
+ <method name="GetTimedLoginDetails">
+ <arg name="enabled" direction="out" type="b"/>
+ <arg name="username" direction="out" type="s"/>
+Index: gdm-2.30.2/daemon/gdm-simple-slave.c
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-simple-slave.c 2010-05-08 13:32:10.669607915 +0200
++++ gdm-2.30.2/daemon/gdm-simple-slave.c 2010-05-08 13:33:16.569611123 +0200
+@@ -109,6 +109,9 @@ on_session_started (GdmSession *se
+
+ g_debug ("GdmSimpleSlave: session started %d", pid);
+
++ /* Respawn the display when the user session has finished */
++ gdm_slave_set_needs_respawn (GDM_SLAVE (slave), TRUE);
++
+ /* Run the PreSession script. gdmslave suspends until script has terminated */
+ username = gdm_session_direct_get_username (slave->priv->session);
+ gdm_slave_run_script (GDM_SLAVE (slave), GDMCONFDIR "/PreSession", username);
+Index: gdm-2.30.2/daemon/gdm-slave.c
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-slave.c 2010-05-08 13:28:48.729109474 +0200
++++ gdm-2.30.2/daemon/gdm-slave.c 2010-05-08 13:29:04.081107426 +0200
+@@ -561,6 +561,33 @@ gdm_slave_set_slave_bus_name (GdmSlave *
+ return res;
+ }
+
++gboolean
++gdm_slave_set_needs_respawn (GdmSlave *slave,
++ gboolean respawn)
++{
++ gboolean res;
++ GError *error;
++
++ error = NULL;
++ res = dbus_g_proxy_call (slave->priv->display_proxy,
++ "SetNeedsRespawn",
++ &error,
++ G_TYPE_BOOLEAN, respawn,
++ G_TYPE_INVALID,
++ G_TYPE_INVALID);
++
++ if (! res) {
++ if (error != NULL) {
++ g_warning ("Failed to set respawn on parent display: %s", error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Failed to set respawn on parent display");
++ }
++ }
++
++ return res;
++}
++
+ static gboolean
+ gdm_slave_real_start (GdmSlave *slave)
+ {
+Index: gdm-2.30.2/daemon/gdm-slave.h
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-slave.h 2010-05-08 13:29:19.385114088 +0200
++++ gdm-2.30.2/daemon/gdm-slave.h 2010-05-08 13:30:26.393122989 +0200
+@@ -72,6 +72,9 @@ gboolean gdm_slave_add_user_a
+ gboolean gdm_slave_switch_to_user_session (GdmSlave *slave,
+ const char *username);
+
++gboolean gdm_slave_set_needs_respawn (GdmSlave *slave,
++ gboolean respawn);
++
+ gboolean gdm_slave_connect_to_x11_display (GdmSlave *slave);
+ void gdm_slave_set_busy_cursor (GdmSlave *slave);
+ gboolean gdm_slave_run_script (GdmSlave *slave,
+Index: gdm-2.30.2/daemon/gdm-transient-display.c
+===================================================================
+--- gdm-2.30.2.orig/daemon/gdm-transient-display.c 2010-05-08 13:08:26.685614561 +0200
++++ gdm-2.30.2/daemon/gdm-transient-display.c 2010-05-08 13:23:01.929109606 +0200
+@@ -45,7 +45,7 @@
+
+ struct GdmTransientDisplayPrivate
+ {
+- gpointer dummy;
++ gboolean needs_respawn;
+ };
+
+ enum {
+@@ -86,6 +86,20 @@ gdm_transient_display_remove_user_author
+ }
+
+ static gboolean
++gdm_transient_display_set_needs_respawn (GdmDisplay *display,
++ gboolean respawn,
++ GError **error)
++{
++ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
++
++ GDM_DISPLAY_CLASS (gdm_transient_display_parent_class)->set_needs_respawn (display, respawn, error);
++
++ GDM_TRANSIENT_DISPLAY (display)->priv->needs_respawn = respawn;
++
++ return TRUE;
++}
++
++static gboolean
+ gdm_transient_display_manage (GdmDisplay *display)
+ {
+ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
+@@ -100,10 +114,24 @@ gdm_transient_display_finish (GdmDisplay
+ {
+ g_return_val_if_fail (GDM_IS_DISPLAY (display), FALSE);
+
+- GDM_DISPLAY_CLASS (gdm_transient_display_parent_class)->finish (display);
++ if (GDM_TRANSIENT_DISPLAY (display)->priv->needs_respawn) {
++ int status;
+
+- /* we don't restart/remanage transient displays */
+- gdm_display_unmanage (display);
++ /* If we were told to respawn, don't call parent's
++ finish since we don't want to be put in the
++ FINISHED state */
++
++ gdm_display_unmanage (display);
++
++ status = gdm_display_get_status (display);
++ if (status != GDM_DISPLAY_FAILED) {
++ gdm_display_manage (display);
++ }
++ } else {
++ GDM_DISPLAY_CLASS (gdm_transient_display_parent_class)->finish (display);
++
++ gdm_display_unmanage (display);
++ }
+
+ return TRUE;
+ }
+@@ -168,6 +196,7 @@ gdm_transient_display_class_init (GdmTra
+ display_class->create_authority = gdm_transient_display_create_authority;
+ display_class->add_user_authorization = gdm_transient_display_add_user_authorization;
+ display_class->remove_user_authorization = gdm_transient_display_remove_user_authorization;
++ display_class->set_needs_respawn = gdm_transient_display_set_needs_respawn;
+ display_class->manage = gdm_transient_display_manage;
+ display_class->finish = gdm_transient_display_finish;
+ display_class->unmanage = gdm_transient_display_unmanage;
Modified: desktop/unstable/gdm3/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/patches/series?rev=24309&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gdm3/debian/patches/series [utf-8] Sat May 8 12:02:04 2010
@@ -18,4 +18,6 @@
16_xserver_path.patch
17_no_libxdmcp.patch
18_switch_kill_greeter.patch
+19_xserver_options.patch
+20_endsession_respawn.patch
90_relibtoolize.patch
Modified: desktop/unstable/gdm3/debian/rules
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gdm3/debian/rules?rev=24309&op=diff
==============================================================================
--- desktop/unstable/gdm3/debian/rules [utf-8] (original)
+++ desktop/unstable/gdm3/debian/rules [utf-8] Sat May 8 12:02:04 2010
@@ -12,7 +12,7 @@
DEB_CONFIGURE_SCRIPT_ENV += X_PATH="/usr/bin" \
X_SERVER_PATH="/usr/bin" \
X_SERVER="/usr/bin/Xorg" \
- X_CONFIG_OPTIONS="-audit 0"
+ X_CONFIG_OPTIONS="-audit 0 -novtswitch"
DEB_CONFIGURE_EXTRA_FLAGS += --disable-scrollkeeper \
--enable-ipv6=yes \
More information about the pkg-gnome-commits
mailing list