From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Q2W5X-0003JI-4T for garchives@archives.gentoo.org; Wed, 23 Mar 2011 21:59:35 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id A6A0D1C0CD; Wed, 23 Mar 2011 21:59:23 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 418701C0CD for ; Wed, 23 Mar 2011 21:59:23 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 86A2D1B40AB for ; Wed, 23 Mar 2011 21:59:22 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id E8CE58006A for ; Wed, 23 Mar 2011 21:59:21 +0000 (UTC) From: "Nirbheek Chauhan" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Nirbheek Chauhan" Message-ID: <7d5b206f2f2e51dcba43d5a9ceed3703b88353aa.nirbheek@gentoo> Subject: [gentoo-commits] proj/gnome:master commit in: gnome-base/gnome-session/files/, gnome-base/gnome-session/ X-VCS-Repository: proj/gnome X-VCS-Files: gnome-base/gnome-session/files/gnome-session-2.91.92-fix-logout.patch gnome-base/gnome-session/gnome-session-2.91.92-r1.ebuild gnome-base/gnome-session/gnome-session-2.91.92.ebuild X-VCS-Directories: gnome-base/gnome-session/files/ gnome-base/gnome-session/ X-VCS-Committer: nirbheek X-VCS-Committer-Name: Nirbheek Chauhan X-VCS-Revision: 7d5b206f2f2e51dcba43d5a9ceed3703b88353aa Date: Wed, 23 Mar 2011 21:59:21 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: f0163b3e3f10835235b7f0ef3d4a35dc commit: 7d5b206f2f2e51dcba43d5a9ceed3703b88353aa Author: Nirbheek Chauhan gentoo org> AuthorDate: Wed Mar 23 21:52:40 2011 +0000 Commit: Nirbheek Chauhan gentoo org> CommitDate: Wed Mar 23 21:59:03 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/gnome.git;a=3D= commit;h=3D7d5b206f gnome-base/gnome-session: fix logout hang https://bugzilla.gnome.org/show_bug.cgi?id=3D645432 --- .../files/gnome-session-2.91.92-fix-logout.patch | 271 ++++++++++++++= ++++++ ...1.92.ebuild =3D> gnome-session-2.91.92-r1.ebuild} | 5 +- 2 files changed, 275 insertions(+), 1 deletions(-) diff --git a/gnome-base/gnome-session/files/gnome-session-2.91.92-fix-log= out.patch b/gnome-base/gnome-session/files/gnome-session-2.91.92-fix-logo= ut.patch new file mode 100644 index 0000000..35d811d --- /dev/null +++ b/gnome-base/gnome-session/files/gnome-session-2.91.92-fix-logout.pat= ch @@ -0,0 +1,271 @@ +From 1cb7101054a04b443b44b6e60928c53f2379034f Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 21 Mar 2011 14:03:55 -0400 +Subject: [PATCH] manager: port to latest shell api + +The shell API changed to support multiple +buttons on the log out dialog (see bug 641375) + +This commit brings gnome-session up to speed. + +https://bugzilla.gnome.org/show_bug.cgi?id=3D645432 +--- + gnome-session/gsm-manager.c | 68 +++++++++++++++++++++++++++++++----- + gnome-session/gsm-shell.c | 82 ++++++++++++++++++++++++++++++++++++= ------ + gnome-session/gsm-shell.h | 5 ++- + 3 files changed, 133 insertions(+), 22 deletions(-) + +diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c +index abbc223..4892c5c 100644 +--- a/gnome-session/gsm-manager.c ++++ b/gnome-session/gsm-manager.c +@@ -149,7 +149,9 @@ struct GsmManagerPrivate + GsmShell *shell; + guint shell_end_session_dialog_canceled_id; + guint shell_end_session_dialog_open_failed_id= ; +- guint shell_end_session_dialog_confirmed_id; ++ guint shell_end_session_dialog_confirmed_logo= ut_id; ++ guint shell_end_session_dialog_confirmed_shut= down_id; ++ guint shell_end_session_dialog_confirmed_rebo= ot_id; + }; +=20 + enum { +@@ -3058,10 +3060,22 @@ disconnect_shell_dialog_signals (GsmManager *man= ager) + manager->priv->shell_end_session_dialog_canceled_id =3D= 0; + } +=20 +- if (manager->priv->shell_end_session_dialog_confirmed_id !=3D 0= ) { ++ if (manager->priv->shell_end_session_dialog_confirmed_logout_id= !=3D 0) { + g_signal_handler_disconnect (manager->priv->shell, +- manager->priv->shell_end_s= ession_dialog_confirmed_id); +- manager->priv->shell_end_session_dialog_confirmed_id =3D= 0; ++ manager->priv->shell_end_s= ession_dialog_confirmed_logout_id); ++ manager->priv->shell_end_session_dialog_confirmed_logou= t_id =3D 0; ++ } ++ ++ if (manager->priv->shell_end_session_dialog_confirmed_shutdown_= id !=3D 0) { ++ g_signal_handler_disconnect (manager->priv->shell, ++ manager->priv->shell_end_s= ession_dialog_confirmed_shutdown_id); ++ manager->priv->shell_end_session_dialog_confirmed_shutd= own_id =3D 0; ++ } ++ ++ if (manager->priv->shell_end_session_dialog_confirmed_reboot_id= !=3D 0) { ++ g_signal_handler_disconnect (manager->priv->shell, ++ manager->priv->shell_end_s= ession_dialog_confirmed_reboot_id); ++ manager->priv->shell_end_session_dialog_confirmed_reboo= t_id =3D 0; + } +=20 + if (manager->priv->shell_end_session_dialog_open_failed_id !=3D= 0) { +@@ -3080,8 +3094,8 @@ on_shell_end_session_dialog_canceled (GsmShell *= shell, + } +=20 + static void +-on_shell_end_session_dialog_confirmed (GsmShell *shell, +- GsmManager *manager) ++_handle_end_session_dialog_response (GsmManager *manager, ++ GsmManagerLogoutType logout_type) + { + /* Note we're checking for END_SESSION here and + * QUERY_END_SESSION in the fallback cases elsewhere. +@@ -3098,7 +3112,31 @@ on_shell_end_session_dialog_confirmed (GsmShell = *shell, + } +=20 + manager->priv->logout_mode =3D GSM_MANAGER_LOGOUT_MODE_FORCE; ++ manager->priv->logout_type =3D logout_type; + end_phase (manager); ++} ++ ++static void ++on_shell_end_session_dialog_confirmed_logout (GsmShell *shell, ++ GsmManager *manager) ++{ ++ _handle_end_session_dialog_response (manager, GSM_MANAGER_LOGOU= T_LOGOUT); ++ disconnect_shell_dialog_signals (manager); ++} ++ ++static void ++on_shell_end_session_dialog_confirmed_shutdown (GsmShell *shell, ++ GsmManager *manager) ++{ ++ _handle_end_session_dialog_response (manager, GSM_MANAGER_LOGOU= T_SHUTDOWN); ++ disconnect_shell_dialog_signals (manager); ++} ++ ++static void ++on_shell_end_session_dialog_confirmed_reboot (GsmShell *shell, ++ GsmManager *manager) ++{ ++ _handle_end_session_dialog_response (manager, GSM_MANAGER_LOGOU= T_REBOOT); + disconnect_shell_dialog_signals (manager); + } +=20 +@@ -3120,10 +3158,22 @@ connect_shell_dialog_signals (GsmManager *manage= r) + G_CALLBACK (on_shell_end_session_dial= og_canceled), + manager); +=20 +- manager->priv->shell_end_session_dialog_confirmed_id =3D ++ manager->priv->shell_end_session_dialog_confirmed_logout_id =3D ++ g_signal_connect (manager->priv->shell, ++ "end-session-dialog-confirmed-logout"= , ++ G_CALLBACK (on_shell_end_session_dial= og_confirmed_logout), ++ manager); ++ ++ manager->priv->shell_end_session_dialog_confirmed_shutdown_id =3D ++ g_signal_connect (manager->priv->shell, ++ "end-session-dialog-confirmed-shutdow= n", ++ G_CALLBACK (on_shell_end_session_dial= og_confirmed_shutdown), ++ manager); ++ ++ manager->priv->shell_end_session_dialog_confirmed_reboot_id =3D + g_signal_connect (manager->priv->shell, +- "end-session-dialog-confirmed", +- G_CALLBACK (on_shell_end_session_dial= og_confirmed), ++ "end-session-dialog-confirmed-reboot"= , ++ G_CALLBACK (on_shell_end_session_dial= og_confirmed_reboot), + manager); + } +=20 +diff --git a/gnome-session/gsm-shell.c b/gnome-session/gsm-shell.c +index fb5f4ed..be234aa 100644 +--- a/gnome-session/gsm-shell.c ++++ b/gnome-session/gsm-shell.c +@@ -74,7 +74,9 @@ enum { + END_SESSION_DIALOG_OPENED =3D 0, + END_SESSION_DIALOG_OPEN_FAILED, + END_SESSION_DIALOG_CANCELED, +- END_SESSION_DIALOG_CONFIRMED, ++ END_SESSION_DIALOG_CONFIRMED_LOGOUT, ++ END_SESSION_DIALOG_CONFIRMED_SHUTDOWN, ++ END_SESSION_DIALOG_CONFIRMED_REBOOT, + NUMBER_OF_SIGNALS + }; +=20 +@@ -169,11 +171,31 @@ gsm_shell_class_init (GsmShellClass *shell_class) + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); +=20 +- signals [END_SESSION_DIALOG_CONFIRMED] =3D +- g_signal_new ("end-session-dialog-confirmed", ++ signals [END_SESSION_DIALOG_CONFIRMED_LOGOUT] =3D ++ g_signal_new ("end-session-dialog-confirmed-logout", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, +- G_STRUCT_OFFSET (GsmShellClass, end_sessi= on_dialog_confirmed), ++ G_STRUCT_OFFSET (GsmShellClass, end_sessi= on_dialog_confirmed_logout), ++ NULL, ++ NULL, ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ ++ signals [END_SESSION_DIALOG_CONFIRMED_SHUTDOWN] =3D ++ g_signal_new ("end-session-dialog-confirmed-shutdown", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GsmShellClass, end_sessi= on_dialog_confirmed_shutdown), ++ NULL, ++ NULL, ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ ++ signals [END_SESSION_DIALOG_CONFIRMED_REBOOT] =3D ++ g_signal_new ("end-session-dialog-confirmed-reboot", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (GsmShellClass, end_sessi= on_dialog_confirmed_reboot), + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, +@@ -477,8 +499,21 @@ on_end_session_dialog_canceled (DBusGProxy *proxy, + } +=20 + static void +-on_end_session_dialog_confirmed (DBusGProxy *proxy, +- GsmShell *shell) ++on_end_session_dialog_confirmed_logout (DBusGProxy *proxy, ++ GsmShell *shell) ++{ ++ if (shell->priv->update_idle_id !=3D 0) { ++ g_source_remove (shell->priv->update_idle_id); ++ shell->priv->update_idle_id =3D 0; ++ } ++ ++ shell->priv->has_open_dialog =3D FALSE; ++ g_signal_emit (G_OBJECT (shell), signals[END_SESSION_DIALOG_CON= FIRMED_LOGOUT], 0); ++} ++ ++static void ++on_end_session_dialog_confirmed_shutdown (DBusGProxy *proxy, ++ GsmShell *shell) + { + if (shell->priv->update_idle_id !=3D 0) { + g_source_remove (shell->priv->update_idle_id); +@@ -486,7 +521,20 @@ on_end_session_dialog_confirmed (DBusGProxy *proxy, + } +=20 + shell->priv->has_open_dialog =3D FALSE; +- g_signal_emit (G_OBJECT (shell), signals[END_SESSION_DIALOG_CON= FIRMED], 0); ++ g_signal_emit (G_OBJECT (shell), signals[END_SESSION_DIALOG_CON= FIRMED_SHUTDOWN], 0); ++} ++ ++static void ++on_end_session_dialog_confirmed_reboot (DBusGProxy *proxy, ++ GsmShell *shell) ++{ ++ if (shell->priv->update_idle_id !=3D 0) { ++ g_source_remove (shell->priv->update_idle_id); ++ shell->priv->update_idle_id =3D 0; ++ } ++ ++ shell->priv->has_open_dialog =3D FALSE; ++ g_signal_emit (G_OBJECT (shell), signals[END_SESSION_DIALOG_CON= FIRMED_REBOOT], 0); + } +=20 + static void +@@ -575,14 +623,24 @@ gsm_shell_open_end_session_dialog (GsmShell *shell= , + "Canceled", + G_CALLBACK (on_end_session= _dialog_canceled), + shell, NULL); +- + dbus_g_proxy_add_signal (shell->priv->end_session_dialo= g_proxy, +- "Confirmed", G_TYPE_INVALID); ++ "ConfirmedLogout", G_TYPE_INVA= LID); + dbus_g_proxy_connect_signal (shell->priv->end_session_d= ialog_proxy, +- "Confirmed", +- G_CALLBACK (on_end_session= _dialog_confirmed), ++ "ConfirmedLogout", ++ G_CALLBACK (on_end_session= _dialog_confirmed_logout), ++ shell, NULL); ++ dbus_g_proxy_add_signal (shell->priv->end_session_dialo= g_proxy, ++ "ConfirmedShutdown", G_TYPE_IN= VALID); ++ dbus_g_proxy_connect_signal (shell->priv->end_session_d= ialog_proxy, ++ "ConfirmedShutdown", ++ G_CALLBACK (on_end_session= _dialog_confirmed_shutdown), ++ shell, NULL); ++ dbus_g_proxy_add_signal (shell->priv->end_session_dialo= g_proxy, ++ "ConfirmedReboot", G_TYPE_INVA= LID); ++ dbus_g_proxy_connect_signal (shell->priv->end_session_d= ialog_proxy, ++ "ConfirmedReboot", ++ G_CALLBACK (on_end_session= _dialog_confirmed_reboot), + shell, NULL); +- + } +=20 + inhibitor_array =3D get_array_from_store (inhibitors); +diff --git a/gnome-session/gsm-shell.h b/gnome-session/gsm-shell.h +index 74a617d..123d4cc 100644 +--- a/gnome-session/gsm-shell.h ++++ b/gnome-session/gsm-shell.h +@@ -64,7 +64,10 @@ struct _GsmShellClass + void (* end_session_dialog_opened) (GsmShell *shell); + void (* end_session_dialog_open_failed) (GsmShell *shell); + void (* end_session_dialog_canceled) (GsmShell *shell); +- void (* end_session_dialog_confirmed) (GsmShell *shell); ++ ++ void (* end_session_dialog_confirmed_logout) (GsmShell *shell= ); ++ void (* end_session_dialog_confirmed_shutdown) (GsmShell *shell= ); ++ void (* end_session_dialog_confirmed_reboot) (GsmShell *shell= ); +=20 + }; +=20 +--=20 +1.7.4.1 \ No newline at end of file diff --git a/gnome-base/gnome-session/gnome-session-2.91.92.ebuild b/gnom= e-base/gnome-session/gnome-session-2.91.92-r1.ebuild similarity index 95% rename from gnome-base/gnome-session/gnome-session-2.91.92.ebuild rename to gnome-base/gnome-session/gnome-session-2.91.92-r1.ebuild index 177516d..df7fdaa 100644 --- a/gnome-base/gnome-session/gnome-session-2.91.92.ebuild +++ b/gnome-base/gnome-session/gnome-session-2.91.92-r1.ebuild @@ -5,7 +5,7 @@ EAPI=3D"3" GCONF_DEBUG=3D"yes" =20 -inherit gnome2 +inherit eutils gnome2 =20 DESCRIPTION=3D"Gnome session manager" HOMEPAGE=3D"http://www.gnome.org/" @@ -73,6 +73,9 @@ src_prepare() { $(use_enable ipv6)" DOCS=3D"AUTHORS ChangeLog NEWS README" =20 + # Fixed upstream, https://bugzilla.gnome.org/show_bug.cgi?id=3D645432 + epatch "${FILESDIR}/${P}-fix-logout.patch" + gnome2_src_prepare } =20