Gentoo Archives: gentoo-commits

From: Alexandre Restovtsev <tetromino@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gnome:gnome-next commit in: x11-wm/mutter/, x11-wm/mutter/files/
Date: Thu, 28 Jul 2011 07:02:15
Message-Id: 11678b04097c3a43cb3c2eb9b983660424eaf652.tetromino@gentoo
1 commit: 11678b04097c3a43cb3c2eb9b983660424eaf652
2 Author: Alexandre Rostovtsev <tetromino <AT> gmail <DOT> com>
3 AuthorDate: Thu Jul 28 06:07:48 2011 +0000
4 Commit: Alexandre Restovtsev <tetromino <AT> gmail <DOT> com>
5 CommitDate: Thu Jul 28 06:07:48 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gnome.git;a=commit;h=11678b04
7
8 x11-wm/mutter: 3.1.3.1 → 3.1.4
9
10 Version bump with various bugfixes and improvements. Update clutter
11 dependency. Patches have been applied upstream.
12
13 ---
14 .../files/mutter-3.1.3.1-crash-on-exit.patch | 37 -----
15 .../mutter-3.1.3.1-meta_later-reentrant.patch | 141 --------------------
16 .../{mutter-3.1.3.1.ebuild => mutter-3.1.4.ebuild} | 12 +--
17 3 files changed, 2 insertions(+), 188 deletions(-)
18
19 diff --git a/x11-wm/mutter/files/mutter-3.1.3.1-crash-on-exit.patch b/x11-wm/mutter/files/mutter-3.1.3.1-crash-on-exit.patch
20 deleted file mode 100644
21 index 65d9ab4..0000000
22 --- a/x11-wm/mutter/files/mutter-3.1.3.1-crash-on-exit.patch
23 +++ /dev/null
24 @@ -1,37 +0,0 @@
25 -From d2b63eaf1f5486380595f3ebb7a26386c1f20363 Mon Sep 17 00:00:00 2001
26 -From: Dan Winship <danw@×××××.org>
27 -Date: Tue, 12 Jul 2011 17:07:15 +0000
28 -Subject: fix a crash-on-exit
29 -
30 -meta_frames_destroy() was not safe to be called multiple times, which
31 -was causing a crash on exit due to something else changing somewhere
32 -that makes it get called multiple times.
33 -
34 -https://bugzilla.gnome.org/show_bug.cgi?id=654489
35 ----
36 -diff --git a/src/ui/frames.c b/src/ui/frames.c
37 -index d9e2bca..167d5dc 100644
38 ---- a/src/ui/frames.c
39 -+++ b/src/ui/frames.c
40 -@@ -313,8 +313,17 @@ meta_frames_destroy (GtkWidget *object)
41 - }
42 - g_slist_free (winlist);
43 -
44 -- g_object_unref (frames->normal_style);
45 -- g_hash_table_destroy (frames->style_variants);
46 -+ if (frames->normal_style)
47 -+ {
48 -+ g_object_unref (frames->normal_style);
49 -+ frames->normal_style = NULL;
50 -+ }
51 -+
52 -+ if (frames->style_variants)
53 -+ {
54 -+ g_hash_table_destroy (frames->style_variants);
55 -+ frames->style_variants = NULL;
56 -+ }
57 -
58 - GTK_WIDGET_CLASS (meta_frames_parent_class)->destroy (object);
59 - }
60 ---
61 -cgit v0.9
62
63 diff --git a/x11-wm/mutter/files/mutter-3.1.3.1-meta_later-reentrant.patch b/x11-wm/mutter/files/mutter-3.1.3.1-meta_later-reentrant.patch
64 deleted file mode 100644
65 index 63387f8..0000000
66 --- a/x11-wm/mutter/files/mutter-3.1.3.1-meta_later-reentrant.patch
67 +++ /dev/null
68 @@ -1,141 +0,0 @@
69 -From cd7a9680932868d1d2ef5447c77712cef9a443dd Mon Sep 17 00:00:00 2001
70 -From: Dan Winship <danw@×××××.org>
71 -Date: Tue, 29 Mar 2011 19:18:57 +0000
72 -Subject: util: fix a reentrancy problem with meta_later
73 -
74 -Calling meta_later_add() or meta_later_remove() from within a
75 -META_LATER_BEFORE_REDRAW callback ended up being a no-op, because of
76 -how run_repaint_laters() was fiddling with the laters list. (This
77 -resulted in a crash in window.c:idle_calc_repaint(), which assumed it
78 -would only be called when a certain queue was non-empty, but was
79 -getting called anyway because of a failed meta_later_remove() call.)
80 -
81 -Fix this by having run_repaint_laters() work on a copy of the laters
82 -list instead, and add refcounting to MetaLater so that removing a
83 -later that run_repaint_laters() hasn't gotten to yet won't cause
84 -problems.
85 -
86 -https://bugzilla.gnome.org/show_bug.cgi?id=642957
87 ----
88 -diff --git a/src/core/util.c b/src/core/util.c
89 -index aea1210..2ce5f79 100644
90 ---- a/src/core/util.c
91 -+++ b/src/core/util.c
92 -@@ -708,6 +708,7 @@ static guint last_later_id = 0;
93 - typedef struct
94 - {
95 - guint id;
96 -+ guint ref_count;
97 - MetaLaterType when;
98 - GSourceFunc func;
99 - gpointer data;
100 -@@ -724,13 +725,29 @@ static guint later_repaint_func = 0;
101 - static void ensure_later_repaint_func (void);
102 -
103 - static void
104 -+unref_later (MetaLater *later)
105 -+{
106 -+ if (--later->ref_count == 0)
107 -+ {
108 -+ if (later->notify)
109 -+ {
110 -+ later->notify (later->data);
111 -+ later->notify = NULL;
112 -+ }
113 -+ g_slice_free (MetaLater, later);
114 -+ }
115 -+}
116 -+
117 -+static void
118 - destroy_later (MetaLater *later)
119 - {
120 - if (later->source)
121 -- g_source_remove (later->source);
122 -- if (later->notify)
123 -- later->notify (later->data);
124 -- g_slice_free (MetaLater, later);
125 -+ {
126 -+ g_source_remove (later->source);
127 -+ later->source = 0;
128 -+ }
129 -+ later->func = NULL;
130 -+ unref_later (later);
131 - }
132 -
133 - /* Used to sort the list of laters with the highest priority
134 -@@ -746,34 +763,41 @@ compare_laters (gconstpointer a,
135 - static gboolean
136 - run_repaint_laters (gpointer data)
137 - {
138 -- GSList *old_laters = laters;
139 -+ GSList *laters_copy;
140 - GSList *l;
141 - gboolean keep_timeline_running = FALSE;
142 -- laters = NULL;
143 -
144 -- for (l = old_laters; l; l = l->next)
145 -+ laters_copy = NULL;
146 -+ for (l = laters; l; l = l->next)
147 - {
148 - MetaLater *later = l->data;
149 - if (later->source == 0 ||
150 - (later->when <= META_LATER_BEFORE_REDRAW && !later->run_once))
151 - {
152 -- if (later->func (later->data))
153 -- {
154 -- if (later->source == 0)
155 -- keep_timeline_running = TRUE;
156 -- laters = g_slist_insert_sorted (laters, later, compare_laters);
157 -- }
158 -- else
159 -- destroy_later (later);
160 -+ later->ref_count++;
161 -+ laters_copy = g_slist_prepend (laters_copy, later);
162 -+ }
163 -+ }
164 -+ laters_copy = g_slist_reverse (laters_copy);
165 -+
166 -+ for (l = laters_copy; l; l = l->next)
167 -+ {
168 -+ MetaLater *later = l->data;
169 -+
170 -+ if (later->func && later->func (later->data))
171 -+ {
172 -+ if (later->source == 0)
173 -+ keep_timeline_running = TRUE;
174 - }
175 - else
176 -- laters = g_slist_insert_sorted (laters, later, compare_laters);
177 -+ meta_later_remove (later->id);
178 -+ unref_later (later);
179 - }
180 -
181 - if (!keep_timeline_running)
182 - clutter_timeline_stop (later_timeline);
183 -
184 -- g_slist_free (old_laters);
185 -+ g_slist_free (laters_copy);
186 -
187 - /* Just keep the repaint func around - it's cheap if the list is empty */
188 - return TRUE;
189 -@@ -800,9 +824,7 @@ call_idle_later (gpointer data)
190 -
191 - if (!later->func (later->data))
192 - {
193 -- laters = g_slist_remove (laters, later);
194 -- later->source = 0;
195 -- destroy_later (later);
196 -+ meta_later_remove (later->id);
197 - return FALSE;
198 - }
199 - else
200 -@@ -838,6 +860,7 @@ meta_later_add (MetaLaterType when,
201 - MetaLater *later = g_slice_new0 (MetaLater);
202 -
203 - later->id = ++last_later_id;
204 -+ later->ref_count = 1;
205 - later->when = when;
206 - later->func = func;
207 - later->data = data;
208 ---
209 -cgit v0.9
210
211 diff --git a/x11-wm/mutter/mutter-3.1.3.1.ebuild b/x11-wm/mutter/mutter-3.1.4.ebuild
212 similarity index 87%
213 rename from x11-wm/mutter/mutter-3.1.3.1.ebuild
214 rename to x11-wm/mutter/mutter-3.1.4.ebuild
215 index 3f8a0e9..8758e2c 100644
216 --- a/x11-wm/mutter/mutter-3.1.3.1.ebuild
217 +++ b/x11-wm/mutter/mutter-3.1.4.ebuild
218 @@ -6,7 +6,7 @@ EAPI="4"
219 GCONF_DEBUG="no"
220 GNOME2_LA_PUNT="yes"
221
222 -inherit eutils gnome2
223 +inherit gnome2
224 if [[ ${PV} = 9999 ]]; then
225 inherit gnome2-live
226 fi
227 @@ -29,7 +29,7 @@ COMMON_DEPEND=">=x11-libs/pango-1.2[X,introspection?]
228 >=x11-libs/gtk+-2.91.7:3[introspection?]
229 >=gnome-base/gconf-2:2
230 >=dev-libs/glib-2.14:2
231 - >=media-libs/clutter-1.2:1.0
232 + >=media-libs/clutter-1.7.5:1.0
233 >=media-libs/libcanberra-0.26[gtk3]
234 >=x11-libs/startup-notification-0.7
235 >=x11-libs/libXcomposite-0.2
236 @@ -76,11 +76,3 @@ pkg_setup() {
237 $(use_enable introspection)
238 $(use_enable xinerama)"
239 }
240 -
241 -src_prepare() {
242 - # Crash fixes from upstream git, will be in next release
243 - epatch "${FILESDIR}/${P}-crash-on-exit.patch"
244 - epatch "${FILESDIR}/${P}-meta_later-reentrant.patch"
245 -
246 - gnome2_src_prepare
247 -}