Merge lp:~om26er/ubuntu/oneiric/compiz/compiz-sru into lp:ubuntu/oneiric-proposed/compiz
- Oneiric (11.10)
- compiz-sru
- Merge into oneiric-proposed
Status: | Merged |
---|---|
Merge reported by: | Stéphane Graber |
Merged at revision: | not available |
Proposed branch: | lp:~om26er/ubuntu/oneiric/compiz/compiz-sru |
Merge into: | lp:ubuntu/oneiric-proposed/compiz |
Diff against target: |
308 lines (+278/-0) 5 files modified
debian/changelog (+13/-0) debian/patches/fix_890947_synthetic_notifications.patch (+43/-0) debian/patches/fix_focus_on_wrong_window_896762.patch (+20/-0) debian/patches/java_offset_frame_extents_878934.patch (+199/-0) debian/patches/series (+3/-0) |
To merge this branch: | bzr merge lp:~om26er/ubuntu/oneiric/compiz/compiz-sru |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Stéphane Graber | Approve | ||
Review via email: mp+85928@code.launchpad.net |
Commit message
Description of the change
fix linked bugs
Omer Akram (om26er) wrote : | # |
Miklos Juhasz (mjuhasz) wrote : | # |
I tried the compiz 6.1 package and compiz hangs when I
1) place a window using the grid plugin, e.g. Ctrl+Alt+1, then
2) I press the maximize button
Rebuilding the deb without the uwd_frame_
- 256. By Omer Akram
-
remove the bad patch
- 257. By Omer Akram
-
fix
Omer Akram (om26er) wrote : | # |
I removed that patch, so that we could get sponsored what works.
Stéphane Graber (stgraber) wrote : | # |
The diff looks good but I'm not too familiar with compiz, so would appreciate it if someone with compiz knowledge could have a look and sponsor or ask me to upload.
Thanks
Stéphane Graber (stgraber) wrote : | # |
Uploaded.
20:06 < stgraber> om26er: have these changes be pushed to Precise?
20:06 < seb128> stgraber, the compiz SRU is fine yes, we have it in the ubuntu-desktop ppa since before holidays
20:07 < stgraber> om26er: I just had a quick look and can't find any matching patches or changes in Precise
20:07 < stgraber> seb128: maybe you can answer that question? ^
20:07 < seb128> stgraber, don't bother about precise, a new compiz release is due there but is taking some time due to the testing etc
20:07 < seb128> stgraber, it will land in the next week or so
20:08 < stgraber> k, as long as I can blame you if someone ask why I uploaded something to proposed without first uploading to Precise, I'm fine :)
Omer Akram (om26er) wrote : | # |
why is it still not merged?
Stéphane Graber (stgraber) wrote : | # |
Someone from the SRU team needs to let it through the -proposed unapproved queue.
https:/
Preview Diff
1 | === modified file 'debian/changelog' | |||
2 | --- debian/changelog 2011-10-20 14:23:52 +0000 | |||
3 | +++ debian/changelog 2012-01-17 19:23:25 +0000 | |||
4 | @@ -1,3 +1,16 @@ | |||
5 | 1 | compiz (1:0.9.6+bzr20110929-0ubuntu6.1) oneiric-proposed; urgency=low | ||
6 | 2 | |||
7 | 3 | * debian/patches/fix_890947_synthetic_notifications.patch: | ||
8 | 4 | - Unity sends initial GDK_CONFIGURE event with position as (0,0). | ||
9 | 5 | (LP: #890947) | ||
10 | 6 | * debian/patches/fix_focus_on_wrong_window_896762.patch: | ||
11 | 7 | - Switching viewports with ctrl-alt-(left/right/up/down) does not | ||
12 | 8 | give the highest window on the target viewport focus. (LP: #896762) | ||
13 | 9 | * debian/patches/java_offset_frame_extents_878934.patch: | ||
14 | 10 | - Menu selection is wrong in Java apps. (LP: #878934) | ||
15 | 11 | |||
16 | 12 | -- Omer Akram <om26er@ubuntu.com> Thu, 15 Dec 2011 23:19:22 +0500 | ||
17 | 13 | |||
18 | 1 | compiz (1:0.9.6+bzr20110929-0ubuntu6) oneiric-proposed; urgency=low | 14 | compiz (1:0.9.6+bzr20110929-0ubuntu6) oneiric-proposed; urgency=low |
19 | 2 | 15 | ||
20 | 3 | * debian/patches/rev_2821_fix_807487.patch: | 16 | * debian/patches/rev_2821_fix_807487.patch: |
21 | 4 | 17 | ||
22 | === added file 'debian/patches/fix_890947_synthetic_notifications.patch' | |||
23 | --- debian/patches/fix_890947_synthetic_notifications.patch 1970-01-01 00:00:00 +0000 | |||
24 | +++ debian/patches/fix_890947_synthetic_notifications.patch 2012-01-17 19:23:25 +0000 | |||
25 | @@ -0,0 +1,43 @@ | |||
26 | 1 | === modified file 'src/window.cpp' | ||
27 | 2 | Index: compiz-0.9.6+bzr20110929/src/window.cpp | ||
28 | 3 | =================================================================== | ||
29 | 4 | --- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:14.514361587 +0800 | ||
30 | 5 | +++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:53.314553987 +0800 | ||
31 | 6 | @@ -1504,7 +1504,7 @@ | ||
32 | 7 | XConfigureEvent xev; | ||
33 | 8 | XWindowAttributes attrib; | ||
34 | 9 | unsigned int nchildren; | ||
35 | 10 | - Window rootRet, parentRet; | ||
36 | 11 | + Window rootRet, parentRet = 0; | ||
37 | 12 | Window *children; | ||
38 | 13 | |||
39 | 14 | xev.type = ConfigureNotify; | ||
40 | 15 | @@ -1526,25 +1526,9 @@ | ||
41 | 16 | xev.border_width = attrib.border_width; | ||
42 | 17 | xev.above = None; | ||
43 | 18 | |||
44 | 19 | - if (priv->frame) | ||
45 | 20 | - { | ||
46 | 21 | - XWindowAttributes fAttrib; | ||
47 | 22 | - XWindowAttributes wAttrib; | ||
48 | 23 | - | ||
49 | 24 | - /* Add offset between wrapper and client */ | ||
50 | 25 | - if (XGetWindowAttributes (screen->dpy (), priv->wrapper, &wAttrib)) | ||
51 | 26 | - { | ||
52 | 27 | - xev.x += wAttrib.x; | ||
53 | 28 | - xev.y += wAttrib.y; | ||
54 | 29 | - } | ||
55 | 30 | - | ||
56 | 31 | - /* Add offset between frame and client */ | ||
57 | 32 | - if (XGetWindowAttributes (screen->dpy (), priv->frame, &fAttrib)) | ||
58 | 33 | - { | ||
59 | 34 | - xev.x += fAttrib.x; | ||
60 | 35 | - xev.y += fAttrib.y; | ||
61 | 36 | - } | ||
62 | 37 | - } | ||
63 | 38 | + /* Translate co-ordinates to root space */ | ||
64 | 39 | + XTranslateCoordinates (screen->dpy (), priv->id, screen->root (), 0, 0, | ||
65 | 40 | + &xev.x, &xev.y, &parentRet); | ||
66 | 41 | |||
67 | 42 | /* We need to ensure that the stacking order is | ||
68 | 43 | * based on the current server stacking order so | ||
69 | 0 | 44 | ||
70 | === added file 'debian/patches/fix_focus_on_wrong_window_896762.patch' | |||
71 | --- debian/patches/fix_focus_on_wrong_window_896762.patch 1970-01-01 00:00:00 +0000 | |||
72 | +++ debian/patches/fix_focus_on_wrong_window_896762.patch 2012-01-17 19:23:25 +0000 | |||
73 | @@ -0,0 +1,20 @@ | |||
74 | 1 | === modified file 'src/window.cpp' | ||
75 | 2 | Index: compiz-0.9.6+bzr20110929/src/window.cpp | ||
76 | 3 | =================================================================== | ||
77 | 4 | --- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:02.906304014 +0800 | ||
78 | 5 | +++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:08.334330942 +0800 | ||
79 | 6 | @@ -2535,10 +2535,10 @@ | ||
80 | 7 | if (!priv->shaded && (priv->state & CompWindowStateHiddenMask)) | ||
81 | 8 | return false; | ||
82 | 9 | |||
83 | 10 | - if (priv->geometry.x () + priv->width <= 0 || | ||
84 | 11 | - priv->geometry.y () + priv->height <= 0 || | ||
85 | 12 | - priv->geometry.x () >= (int) screen->width ()|| | ||
86 | 13 | - priv->geometry.y () >= (int) screen->height ()) | ||
87 | 14 | + if (priv->serverGeometry.x () + priv->serverGeometry.width () <= 0 || | ||
88 | 15 | + priv->serverGeometry.y () + priv->serverGeometry.height () <= 0 || | ||
89 | 16 | + priv->serverGeometry.x () >= (int) screen->width ()|| | ||
90 | 17 | + priv->serverGeometry.y () >= (int) screen->height ()) | ||
91 | 18 | return false; | ||
92 | 19 | |||
93 | 20 | return true; | ||
94 | 0 | 21 | ||
95 | === added file 'debian/patches/java_offset_frame_extents_878934.patch' | |||
96 | --- debian/patches/java_offset_frame_extents_878934.patch 1970-01-01 00:00:00 +0000 | |||
97 | +++ debian/patches/java_offset_frame_extents_878934.patch 2012-01-17 19:23:25 +0000 | |||
98 | @@ -0,0 +1,199 @@ | |||
99 | 1 | === modified file 'plugins/decor/src/decor.cpp' | ||
100 | 2 | Index: compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp | ||
101 | 3 | =================================================================== | ||
102 | 4 | --- compiz-0.9.6+bzr20110929.orig/plugins/decor/src/decor.cpp 2011-12-15 22:47:02.878303874 +0800 | ||
103 | 5 | +++ compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp 2011-12-15 22:47:14.510361578 +0800 | ||
104 | 6 | @@ -825,6 +825,7 @@ | ||
105 | 7 | { | ||
106 | 8 | Decoration *old, *decoration = NULL; | ||
107 | 9 | bool decorate = false; | ||
108 | 10 | + bool shadowOnly = true; | ||
109 | 11 | int moveDx, moveDy; | ||
110 | 12 | int oldShiftX = 0; | ||
111 | 13 | int oldShiftY = 0; | ||
112 | 14 | @@ -849,34 +850,36 @@ | ||
113 | 15 | case CompWindowTypeMenuMask: | ||
114 | 16 | case CompWindowTypeNormalMask: | ||
115 | 17 | if (window->mwmDecor () & (MwmDecorAll | MwmDecorTitle)) | ||
116 | 18 | - decorate = (window->frame () || | ||
117 | 19 | - window->hasUnmapReference ()) ? true : false; | ||
118 | 20 | + shadowOnly = false; | ||
119 | 21 | default: | ||
120 | 22 | break; | ||
121 | 23 | } | ||
122 | 24 | |||
123 | 25 | if (window->overrideRedirect ()) | ||
124 | 26 | - decorate = false; | ||
125 | 27 | + shadowOnly = true; | ||
126 | 28 | |||
127 | 29 | if (window->wmType () & (CompWindowTypeDockMask | CompWindowTypeDesktopMask)) | ||
128 | 30 | - decorate = false; | ||
129 | 31 | + shadowOnly = true; | ||
130 | 32 | |||
131 | 33 | - if (decorate) | ||
132 | 34 | + if (!shadowOnly) | ||
133 | 35 | { | ||
134 | 36 | if (!dScreen->optionGetDecorationMatch ().evaluate (window)) | ||
135 | 37 | - decorate = false; | ||
136 | 38 | + shadowOnly = true; | ||
137 | 39 | } | ||
138 | 40 | } | ||
139 | 41 | else | ||
140 | 42 | - decorate = true; | ||
141 | 43 | + shadowOnly = false; | ||
142 | 44 | + | ||
143 | 45 | + decorate = ((window->frame () || | ||
144 | 46 | + window->hasUnmapReference ()) && !shadowOnly) || | ||
145 | 47 | + isSwitcher; | ||
146 | 48 | |||
147 | 49 | - if (decorate) | ||
148 | 50 | + if (decorate || frameExtentsRequested) | ||
149 | 51 | { | ||
150 | 52 | if (decor && checkSize (decor)) | ||
151 | 53 | decoration = decor; | ||
152 | 54 | else | ||
153 | 55 | { | ||
154 | 56 | - | ||
155 | 57 | if (dScreen->dmSupports & WINDOW_DECORATION_TYPE_PIXMAP && | ||
156 | 58 | dScreen->cmActive && | ||
157 | 59 | !(dScreen->dmSupports & WINDOW_DECORATION_TYPE_WINDOW && | ||
158 | 60 | @@ -890,6 +893,11 @@ | ||
159 | 61 | else if (dScreen->dmSupports & WINDOW_DECORATION_TYPE_WINDOW) | ||
160 | 62 | decoration = &dScreen->windowDefault; | ||
161 | 63 | } | ||
162 | 64 | + | ||
163 | 65 | + /* Do not allow windows which are later undecorated | ||
164 | 66 | + * to have a set _NET_FRAME_EXTENTS */ | ||
165 | 67 | + if (decorate) | ||
166 | 68 | + frameExtentsRequested = false; | ||
167 | 69 | } | ||
168 | 70 | else | ||
169 | 71 | { | ||
170 | 72 | @@ -944,7 +952,8 @@ | ||
171 | 73 | moveDx = shiftX () - oldShiftX; | ||
172 | 74 | moveDy = shiftY () - oldShiftY; | ||
173 | 75 | |||
174 | 76 | - updateFrame (); | ||
175 | 77 | + if (decorate) | ||
176 | 78 | + updateFrame (); | ||
177 | 79 | window->updateWindowOutputExtents (); | ||
178 | 80 | if (dScreen->cmActive) | ||
179 | 81 | cWindow->damageOutputExtents (); | ||
180 | 82 | @@ -955,7 +964,8 @@ | ||
181 | 83 | CompWindowExtents emptyExtents; | ||
182 | 84 | wd = NULL; | ||
183 | 85 | |||
184 | 86 | - updateFrame (); | ||
185 | 87 | + if (decorate) | ||
186 | 88 | + updateFrame (); | ||
187 | 89 | |||
188 | 90 | memset (&emptyExtents, 0, sizeof (CompWindowExtents)); | ||
189 | 91 | |||
190 | 92 | @@ -1385,6 +1395,8 @@ | ||
191 | 93 | |||
192 | 94 | this->dmSupports = dmSupports; | ||
193 | 95 | |||
194 | 96 | + screen->updateSupportedWmHints (); | ||
195 | 97 | + | ||
196 | 98 | if (dmWin) | ||
197 | 99 | { | ||
198 | 100 | for (i = 0; i < DECOR_NUM; i++) | ||
199 | 101 | @@ -2047,7 +2059,10 @@ | ||
200 | 102 | { | ||
201 | 103 | screen->addSupportedAtoms (atoms); | ||
202 | 104 | |||
203 | 105 | - atoms.push_back (requestFrameExtentsAtom); | ||
204 | 106 | + /* Don't support _NET_REQUEST_FRAME_EXTENTS | ||
205 | 107 | + * where there is no decorator running yet */ | ||
206 | 108 | + if (dmWin) | ||
207 | 109 | + atoms.push_back (requestFrameExtentsAtom); | ||
208 | 110 | } | ||
209 | 111 | |||
210 | 112 | bool | ||
211 | 113 | @@ -2155,7 +2170,8 @@ | ||
212 | 114 | updateReg (true), | ||
213 | 115 | unshading (false), | ||
214 | 116 | shading (false), | ||
215 | 117 | - isSwitcher (false) | ||
216 | 118 | + isSwitcher (false), | ||
217 | 119 | + frameExtentsRequested (false) | ||
218 | 120 | { | ||
219 | 121 | WindowInterface::setHandler (window); | ||
220 | 122 | |||
221 | 123 | Index: compiz-0.9.6+bzr20110929/plugins/decor/src/decor.h | ||
222 | 124 | =================================================================== | ||
223 | 125 | --- compiz-0.9.6+bzr20110929.orig/plugins/decor/src/decor.h 2011-09-29 14:53:38.000000000 +0800 | ||
224 | 126 | +++ compiz-0.9.6+bzr20110929/plugins/decor/src/decor.h 2011-12-15 22:47:14.510361578 +0800 | ||
225 | 127 | @@ -242,6 +242,8 @@ | ||
226 | 128 | bool unshading; | ||
227 | 129 | bool shading; | ||
228 | 130 | bool isSwitcher; | ||
229 | 131 | + | ||
230 | 132 | + bool frameExtentsRequested; | ||
231 | 133 | }; | ||
232 | 134 | |||
233 | 135 | class DecorPluginVTable : | ||
234 | 136 | Index: compiz-0.9.6+bzr20110929/src/window.cpp | ||
235 | 137 | =================================================================== | ||
236 | 138 | --- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:08.334330942 +0800 | ||
237 | 139 | +++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:14.514361587 +0800 | ||
238 | 140 | @@ -6832,31 +6832,42 @@ | ||
239 | 141 | priv->border.top != b->top || | ||
240 | 142 | priv->border.bottom != b->bottom) | ||
241 | 143 | { | ||
242 | 144 | - unsigned long data[4]; | ||
243 | 145 | - | ||
244 | 146 | priv->serverInput = *i; | ||
245 | 147 | priv->border = *b; | ||
246 | 148 | |||
247 | 149 | recalcActions (); | ||
248 | 150 | |||
249 | 151 | - /* Use b for _NET_WM_FRAME_EXTENTS here because | ||
250 | 152 | - * that is the representation of the actual decoration | ||
251 | 153 | - * around the window that the user sees and should | ||
252 | 154 | - * be used for placement and such */ | ||
253 | 155 | - | ||
254 | 156 | - data[0] = b->left; | ||
255 | 157 | - data[1] = b->right; | ||
256 | 158 | - data[2] = b->top; | ||
257 | 159 | - data[3] = b->bottom; | ||
258 | 160 | - | ||
259 | 161 | - XChangeProperty (screen->dpy (), priv->id, | ||
260 | 162 | - Atoms::frameExtents, | ||
261 | 163 | - XA_CARDINAL, 32, PropModeReplace, | ||
262 | 164 | - (unsigned char *) data, 4); | ||
263 | 165 | - | ||
264 | 166 | priv->updateSize (); | ||
265 | 167 | priv->updateFrameWindow (); | ||
266 | 168 | } | ||
267 | 169 | + | ||
268 | 170 | + /* Use b for _NET_WM_FRAME_EXTENTS here because | ||
269 | 171 | + * that is the representation of the actual decoration | ||
270 | 172 | + * around the window that the user sees and should | ||
271 | 173 | + * be used for placement and such */ | ||
272 | 174 | + | ||
273 | 175 | + /* Also update frame extents regardless of whether or not | ||
274 | 176 | + * the frame extents actually changed, eg, a plugin could | ||
275 | 177 | + * suggest that a window has no frame extents and that it | ||
276 | 178 | + * might later get frame extents - this is mandatory if we | ||
277 | 179 | + * say that we support it, so set them | ||
278 | 180 | + * additionaly some applications might request frame extents | ||
279 | 181 | + * and we must respond by setting the property - ideally | ||
280 | 182 | + * this should only ever be done when some plugin actually | ||
281 | 183 | + * need to change the frame extents or the applications | ||
282 | 184 | + * requested it */ | ||
283 | 185 | + | ||
284 | 186 | + unsigned long data[4]; | ||
285 | 187 | + | ||
286 | 188 | + data[0] = b->left; | ||
287 | 189 | + data[1] = b->right; | ||
288 | 190 | + data[2] = b->top; | ||
289 | 191 | + data[3] = b->bottom; | ||
290 | 192 | + | ||
291 | 193 | + XChangeProperty (screen->dpy (), priv->id, | ||
292 | 194 | + Atoms::frameExtents, | ||
293 | 195 | + XA_CARDINAL, 32, PropModeReplace, | ||
294 | 196 | + (unsigned char *) data, 4); | ||
295 | 197 | } | ||
296 | 198 | |||
297 | 199 | bool | ||
298 | 0 | 200 | ||
299 | === modified file 'debian/patches/series' | |||
300 | --- debian/patches/series 2011-10-20 14:23:52 +0000 | |||
301 | +++ debian/patches/series 2012-01-17 19:23:25 +0000 | |||
302 | @@ -18,3 +18,6 @@ | |||
303 | 18 | rev_2884_fix_874004.patch | 18 | rev_2884_fix_874004.patch |
304 | 19 | rev_2890_fix_879253.patch | 19 | rev_2890_fix_879253.patch |
305 | 20 | fix-886978.patch | 20 | fix-886978.patch |
306 | 21 | fix_890947_synthetic_notifications.patch | ||
307 | 22 | fix_focus_on_wrong_window_896762.patch | ||
308 | 23 | java_offset_frame_extents_878934.patch |
builds fine on: /launchpad. net/~om26er/ +archive/ test/+build/ 3013234 /launchpad. net/~om26er/ +archive/ test/+build/ 3013233
32-bit https:/
64-bit https:/