Merge lp:~om26er/ubuntu/oneiric/compiz/compiz-sru into lp:ubuntu/oneiric-proposed/compiz

Proposed by Omer Akram
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
Reviewer Review Type Date Requested Status
Stéphane Graber Approve
Review via email: mp+85928@code.launchpad.net

Description of the change

fix linked bugs

To post a comment you must log in.
Revision history for this message
Omer Akram (om26er) wrote :
Revision history for this message
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_padding_904746 patch (only with the patch for the other 3 bugs) I don't get this freeze.

256. By Omer Akram

remove the bad patch

257. By Omer Akram

fix

Revision history for this message
Omer Akram (om26er) wrote :

I removed that patch, so that we could get sponsored what works.

Revision history for this message
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

review: Approve
Revision history for this message
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 :)

Revision history for this message
Omer Akram (om26er) wrote :

why is it still not merged?

Revision history for this message
Stéphane Graber (stgraber) wrote :

Someone from the SRU team needs to let it through the -proposed unapproved queue.
https://launchpad.net/ubuntu/oneiric/+queue?queue_state=1&queue_text=

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
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+compiz (1:0.9.6+bzr20110929-0ubuntu6.1) oneiric-proposed; urgency=low
6+
7+ * debian/patches/fix_890947_synthetic_notifications.patch:
8+ - Unity sends initial GDK_CONFIGURE event with position as (0,0).
9+ (LP: #890947)
10+ * debian/patches/fix_focus_on_wrong_window_896762.patch:
11+ - Switching viewports with ctrl-alt-(left/right/up/down) does not
12+ give the highest window on the target viewport focus. (LP: #896762)
13+ * debian/patches/java_offset_frame_extents_878934.patch:
14+ - Menu selection is wrong in Java apps. (LP: #878934)
15+
16+ -- Omer Akram <om26er@ubuntu.com> Thu, 15 Dec 2011 23:19:22 +0500
17+
18 compiz (1:0.9.6+bzr20110929-0ubuntu6) oneiric-proposed; urgency=low
19
20 * debian/patches/rev_2821_fix_807487.patch:
21
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+=== modified file 'src/window.cpp'
27+Index: compiz-0.9.6+bzr20110929/src/window.cpp
28+===================================================================
29+--- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:14.514361587 +0800
30++++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:53.314553987 +0800
31+@@ -1504,7 +1504,7 @@
32+ XConfigureEvent xev;
33+ XWindowAttributes attrib;
34+ unsigned int nchildren;
35+- Window rootRet, parentRet;
36++ Window rootRet, parentRet = 0;
37+ Window *children;
38+
39+ xev.type = ConfigureNotify;
40+@@ -1526,25 +1526,9 @@
41+ xev.border_width = attrib.border_width;
42+ xev.above = None;
43+
44+- if (priv->frame)
45+- {
46+- XWindowAttributes fAttrib;
47+- XWindowAttributes wAttrib;
48+-
49+- /* Add offset between wrapper and client */
50+- if (XGetWindowAttributes (screen->dpy (), priv->wrapper, &wAttrib))
51+- {
52+- xev.x += wAttrib.x;
53+- xev.y += wAttrib.y;
54+- }
55+-
56+- /* Add offset between frame and client */
57+- if (XGetWindowAttributes (screen->dpy (), priv->frame, &fAttrib))
58+- {
59+- xev.x += fAttrib.x;
60+- xev.y += fAttrib.y;
61+- }
62+- }
63++ /* Translate co-ordinates to root space */
64++ XTranslateCoordinates (screen->dpy (), priv->id, screen->root (), 0, 0,
65++ &xev.x, &xev.y, &parentRet);
66+
67+ /* We need to ensure that the stacking order is
68+ * based on the current server stacking order so
69
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+=== modified file 'src/window.cpp'
75+Index: compiz-0.9.6+bzr20110929/src/window.cpp
76+===================================================================
77+--- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:02.906304014 +0800
78++++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:08.334330942 +0800
79+@@ -2535,10 +2535,10 @@
80+ if (!priv->shaded && (priv->state & CompWindowStateHiddenMask))
81+ return false;
82+
83+- if (priv->geometry.x () + priv->width <= 0 ||
84+- priv->geometry.y () + priv->height <= 0 ||
85+- priv->geometry.x () >= (int) screen->width ()||
86+- priv->geometry.y () >= (int) screen->height ())
87++ if (priv->serverGeometry.x () + priv->serverGeometry.width () <= 0 ||
88++ priv->serverGeometry.y () + priv->serverGeometry.height () <= 0 ||
89++ priv->serverGeometry.x () >= (int) screen->width ()||
90++ priv->serverGeometry.y () >= (int) screen->height ())
91+ return false;
92+
93+ return true;
94
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+=== modified file 'plugins/decor/src/decor.cpp'
100+Index: compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp
101+===================================================================
102+--- compiz-0.9.6+bzr20110929.orig/plugins/decor/src/decor.cpp 2011-12-15 22:47:02.878303874 +0800
103++++ compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp 2011-12-15 22:47:14.510361578 +0800
104+@@ -825,6 +825,7 @@
105+ {
106+ Decoration *old, *decoration = NULL;
107+ bool decorate = false;
108++ bool shadowOnly = true;
109+ int moveDx, moveDy;
110+ int oldShiftX = 0;
111+ int oldShiftY = 0;
112+@@ -849,34 +850,36 @@
113+ case CompWindowTypeMenuMask:
114+ case CompWindowTypeNormalMask:
115+ if (window->mwmDecor () & (MwmDecorAll | MwmDecorTitle))
116+- decorate = (window->frame () ||
117+- window->hasUnmapReference ()) ? true : false;
118++ shadowOnly = false;
119+ default:
120+ break;
121+ }
122+
123+ if (window->overrideRedirect ())
124+- decorate = false;
125++ shadowOnly = true;
126+
127+ if (window->wmType () & (CompWindowTypeDockMask | CompWindowTypeDesktopMask))
128+- decorate = false;
129++ shadowOnly = true;
130+
131+- if (decorate)
132++ if (!shadowOnly)
133+ {
134+ if (!dScreen->optionGetDecorationMatch ().evaluate (window))
135+- decorate = false;
136++ shadowOnly = true;
137+ }
138+ }
139+ else
140+- decorate = true;
141++ shadowOnly = false;
142++
143++ decorate = ((window->frame () ||
144++ window->hasUnmapReference ()) && !shadowOnly) ||
145++ isSwitcher;
146+
147+- if (decorate)
148++ if (decorate || frameExtentsRequested)
149+ {
150+ if (decor && checkSize (decor))
151+ decoration = decor;
152+ else
153+ {
154+-
155+ if (dScreen->dmSupports & WINDOW_DECORATION_TYPE_PIXMAP &&
156+ dScreen->cmActive &&
157+ !(dScreen->dmSupports & WINDOW_DECORATION_TYPE_WINDOW &&
158+@@ -890,6 +893,11 @@
159+ else if (dScreen->dmSupports & WINDOW_DECORATION_TYPE_WINDOW)
160+ decoration = &dScreen->windowDefault;
161+ }
162++
163++ /* Do not allow windows which are later undecorated
164++ * to have a set _NET_FRAME_EXTENTS */
165++ if (decorate)
166++ frameExtentsRequested = false;
167+ }
168+ else
169+ {
170+@@ -944,7 +952,8 @@
171+ moveDx = shiftX () - oldShiftX;
172+ moveDy = shiftY () - oldShiftY;
173+
174+- updateFrame ();
175++ if (decorate)
176++ updateFrame ();
177+ window->updateWindowOutputExtents ();
178+ if (dScreen->cmActive)
179+ cWindow->damageOutputExtents ();
180+@@ -955,7 +964,8 @@
181+ CompWindowExtents emptyExtents;
182+ wd = NULL;
183+
184+- updateFrame ();
185++ if (decorate)
186++ updateFrame ();
187+
188+ memset (&emptyExtents, 0, sizeof (CompWindowExtents));
189+
190+@@ -1385,6 +1395,8 @@
191+
192+ this->dmSupports = dmSupports;
193+
194++ screen->updateSupportedWmHints ();
195++
196+ if (dmWin)
197+ {
198+ for (i = 0; i < DECOR_NUM; i++)
199+@@ -2047,7 +2059,10 @@
200+ {
201+ screen->addSupportedAtoms (atoms);
202+
203+- atoms.push_back (requestFrameExtentsAtom);
204++ /* Don't support _NET_REQUEST_FRAME_EXTENTS
205++ * where there is no decorator running yet */
206++ if (dmWin)
207++ atoms.push_back (requestFrameExtentsAtom);
208+ }
209+
210+ bool
211+@@ -2155,7 +2170,8 @@
212+ updateReg (true),
213+ unshading (false),
214+ shading (false),
215+- isSwitcher (false)
216++ isSwitcher (false),
217++ frameExtentsRequested (false)
218+ {
219+ WindowInterface::setHandler (window);
220+
221+Index: compiz-0.9.6+bzr20110929/plugins/decor/src/decor.h
222+===================================================================
223+--- compiz-0.9.6+bzr20110929.orig/plugins/decor/src/decor.h 2011-09-29 14:53:38.000000000 +0800
224++++ compiz-0.9.6+bzr20110929/plugins/decor/src/decor.h 2011-12-15 22:47:14.510361578 +0800
225+@@ -242,6 +242,8 @@
226+ bool unshading;
227+ bool shading;
228+ bool isSwitcher;
229++
230++ bool frameExtentsRequested;
231+ };
232+
233+ class DecorPluginVTable :
234+Index: compiz-0.9.6+bzr20110929/src/window.cpp
235+===================================================================
236+--- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:08.334330942 +0800
237++++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:14.514361587 +0800
238+@@ -6832,31 +6832,42 @@
239+ priv->border.top != b->top ||
240+ priv->border.bottom != b->bottom)
241+ {
242+- unsigned long data[4];
243+-
244+ priv->serverInput = *i;
245+ priv->border = *b;
246+
247+ recalcActions ();
248+
249+- /* Use b for _NET_WM_FRAME_EXTENTS here because
250+- * that is the representation of the actual decoration
251+- * around the window that the user sees and should
252+- * be used for placement and such */
253+-
254+- data[0] = b->left;
255+- data[1] = b->right;
256+- data[2] = b->top;
257+- data[3] = b->bottom;
258+-
259+- XChangeProperty (screen->dpy (), priv->id,
260+- Atoms::frameExtents,
261+- XA_CARDINAL, 32, PropModeReplace,
262+- (unsigned char *) data, 4);
263+-
264+ priv->updateSize ();
265+ priv->updateFrameWindow ();
266+ }
267++
268++ /* Use b for _NET_WM_FRAME_EXTENTS here because
269++ * that is the representation of the actual decoration
270++ * around the window that the user sees and should
271++ * be used for placement and such */
272++
273++ /* Also update frame extents regardless of whether or not
274++ * the frame extents actually changed, eg, a plugin could
275++ * suggest that a window has no frame extents and that it
276++ * might later get frame extents - this is mandatory if we
277++ * say that we support it, so set them
278++ * additionaly some applications might request frame extents
279++ * and we must respond by setting the property - ideally
280++ * this should only ever be done when some plugin actually
281++ * need to change the frame extents or the applications
282++ * requested it */
283++
284++ unsigned long data[4];
285++
286++ data[0] = b->left;
287++ data[1] = b->right;
288++ data[2] = b->top;
289++ data[3] = b->bottom;
290++
291++ XChangeProperty (screen->dpy (), priv->id,
292++ Atoms::frameExtents,
293++ XA_CARDINAL, 32, PropModeReplace,
294++ (unsigned char *) data, 4);
295+ }
296+
297+ bool
298
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 rev_2884_fix_874004.patch
304 rev_2890_fix_879253.patch
305 fix-886978.patch
306+fix_890947_synthetic_notifications.patch
307+fix_focus_on_wrong_window_896762.patch
308+java_offset_frame_extents_878934.patch

Subscribers

People subscribed via source and target branches

to all changes: