1 |
eva 09/10/29 23:46:26 |
2 |
|
3 |
Added: gnome-session-2.28.0-xsmp-stop-throw-error.patch |
4 |
gnome-session-2.27.91-gentoo-branding.patch |
5 |
gnome-session-2.28.0-do-not-keep-zombie-clients.patch |
6 |
Log: |
7 |
New version for GNOME 2.28. Clean up old revision. |
8 |
(Portage version: 2.2_rc46/cvs/Linux x86_64) |
9 |
|
10 |
Revision Changes Path |
11 |
1.1 gnome-base/gnome-session/files/gnome-session-2.28.0-xsmp-stop-throw-error.patch |
12 |
|
13 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/gnome-base/gnome-session/files/gnome-session-2.28.0-xsmp-stop-throw-error.patch?rev=1.1&view=markup |
14 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/gnome-base/gnome-session/files/gnome-session-2.28.0-xsmp-stop-throw-error.patch?rev=1.1&content-type=text/plain |
15 |
|
16 |
Index: gnome-session-2.28.0-xsmp-stop-throw-error.patch |
17 |
=================================================================== |
18 |
From ff15cffb457715179a69cc8e05212a19ffbd4a25 Mon Sep 17 00:00:00 2001 |
19 |
From: Romain Perier <mrpouet@g.o> |
20 |
Date: Wed, 14 Oct 2009 11:06:19 +0200 |
21 |
Subject: [PATCH] Throw an error from xsmp_stop() when the client is not registered, it's fixes a SIGSEGV |
22 |
|
23 |
--- |
24 |
gnome-session/gsm-xsmp-client.c | 9 +++++++++ |
25 |
1 files changed, 9 insertions(+), 0 deletions(-) |
26 |
|
27 |
diff --git a/gnome-session/gsm-xsmp-client.c b/gnome-session/gsm-xsmp-client.c |
28 |
index bc3f77e..7e7ad99 100644 |
29 |
--- a/gnome-session/gsm-xsmp-client.c |
30 |
+++ b/gnome-session/gsm-xsmp-client.c |
31 |
@@ -713,6 +713,15 @@ xsmp_stop (GsmClient *client, |
32 |
|
33 |
g_debug ("GsmXSMPClient: xsmp_stop ('%s')", xsmp->priv->description); |
34 |
|
35 |
+ /*FIXME: What do we do if the client can't be stoped ? |
36 |
+ * (probably a cleaner solution exists...) */ |
37 |
+ if (xsmp->priv->conn == NULL) { |
38 |
+ g_set_error (error, |
39 |
+ GSM_CLIENT_ERROR, |
40 |
+ GSM_CLIENT_ERROR_NOT_REGISTERED, |
41 |
+ "Client is not registered"); |
42 |
+ return FALSE; |
43 |
+ } |
44 |
SmsDie (xsmp->priv->conn); |
45 |
|
46 |
return TRUE; |
47 |
-- |
48 |
1.6.5 |
49 |
|
50 |
|
51 |
|
52 |
1.1 gnome-base/gnome-session/files/gnome-session-2.27.91-gentoo-branding.patch |
53 |
|
54 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/gnome-base/gnome-session/files/gnome-session-2.27.91-gentoo-branding.patch?rev=1.1&view=markup |
55 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/gnome-base/gnome-session/files/gnome-session-2.27.91-gentoo-branding.patch?rev=1.1&content-type=text/plain |
56 |
|
57 |
Index: gnome-session-2.27.91-gentoo-branding.patch |
58 |
=================================================================== |
59 |
Our own splash for world domination (updated for 2.27.91) |
60 |
|
61 |
--- |
62 |
--- data/gnome-session.schemas.in.in |
63 |
+++ data/gnome-session.schemas.in.in |
64 |
@@ -40,7 +40,7 @@ |
65 |
<applyto>/apps/gnome-session/options/splash_image</applyto> |
66 |
<owner>gnome</owner> |
67 |
<type>string</type> |
68 |
- <default>splash/gnome-splash.png</default> |
69 |
+ <default>splash/gentoo-splash.png</default> |
70 |
<locale name="C"> |
71 |
<short>Preferred Image to use for login splash screen</short> |
72 |
<long>This is a relative path value based off the $datadir/pixmaps/ directory. Sub-directories and image names are valid values. Changing this value will effect the next session login.</long> |
73 |
|
74 |
|
75 |
|
76 |
1.1 gnome-base/gnome-session/files/gnome-session-2.28.0-do-not-keep-zombie-clients.patch |
77 |
|
78 |
file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/gnome-base/gnome-session/files/gnome-session-2.28.0-do-not-keep-zombie-clients.patch?rev=1.1&view=markup |
79 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/gnome-base/gnome-session/files/gnome-session-2.28.0-do-not-keep-zombie-clients.patch?rev=1.1&content-type=text/plain |
80 |
|
81 |
Index: gnome-session-2.28.0-do-not-keep-zombie-clients.patch |
82 |
=================================================================== |
83 |
From: Romain Perier <mrpouet@g.o> |
84 |
Date: Fri, 23 Oct 2009 14:17:40 +0200 |
85 |
Subject: [PATCH] Avoid to keep zombie clients in the case when a IceError is thrown between accept_ice_connection() and accept_xsmp_connection() |
86 |
|
87 |
Assuming the following behaviour: |
88 |
An "Ice packet" is caught by accept_ice_connection() and the new Ice connection is accepted, |
89 |
then a GsmXsmpClient is instancied and stored in GsmXsmpServer's table. |
90 |
gsm_store_add() function emits the "ADDED" signal, which calls gsm_manager.c:on_store_client_added() (connected to ADDED signal), |
91 |
this previous callback install some signals EXCEPT "disconnect" signal on this new client. |
92 |
Now before the client being registered by libSM and before accept_xsmp_connection() is invoked, an IceError is thrown. |
93 |
gsm_xsmp_client.c:client_iochannel_watch() catchs this error : |
94 |
What is the default behaviour of this function when a IceProcessMessagesIOError is detected ? |
95 |
- the status of the client is changed to GSM_CLIENT_FAILED |
96 |
- then the "disconnect" signal is emited on this object (a client) |
97 |
|
98 |
=> a problem occurs, because the "disconnect" signal is not connected yet (done by GsmManager on a registered xsmp client) |
99 |
=> so the client is able to be freed (depending on the counter reference) |
100 |
=> but the client is not removed from the GsmManager's table. |
101 |
Conclusion: the client is a "zombie". |
102 |
|
103 |
The solution is to connect the "disconnect" client in gsm_manager.c:on_store_client_added(), and in a case like that |
104 |
its works perfectly :) |
105 |
|
106 |
=> NO timeout executed on logout/reboot/shutdown ;) |
107 |
|
108 |
--- |
109 |
gnome-session/gsm-manager.c | 6 ++++-- |
110 |
1 files changed, 4 insertions(+), 2 deletions(-) |
111 |
|
112 |
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c |
113 |
index ee90716..06c6a02 100644 |
114 |
--- a/gnome-session/gsm-manager.c |
115 |
+++ b/gnome-session/gsm-manager.c |
116 |
@@ -1988,9 +1988,11 @@ on_store_client_added (GsmStore *store, |
117 |
"end-session-response", |
118 |
G_CALLBACK (on_client_end_session_response), |
119 |
manager); |
120 |
- |
121 |
+ g_signal_connect (client, |
122 |
+ "disconnected", |
123 |
+ G_CALLBACK (on_client_disconnected), |
124 |
+ manager); |
125 |
g_signal_emit (manager, signals [CLIENT_ADDED], 0, id); |
126 |
- /* FIXME: disconnect signal handler */ |
127 |
} |
128 |
|
129 |
static void |
130 |
-- |
131 |
1.6.5.1 |