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
=== modified file 'debian/changelog'
--- debian/changelog 2011-10-20 14:23:52 +0000
+++ debian/changelog 2012-01-17 19:23:25 +0000
@@ -1,3 +1,16 @@
1compiz (1:0.9.6+bzr20110929-0ubuntu6.1) oneiric-proposed; urgency=low
2
3 * debian/patches/fix_890947_synthetic_notifications.patch:
4 - Unity sends initial GDK_CONFIGURE event with position as (0,0).
5 (LP: #890947)
6 * debian/patches/fix_focus_on_wrong_window_896762.patch:
7 - Switching viewports with ctrl-alt-(left/right/up/down) does not
8 give the highest window on the target viewport focus. (LP: #896762)
9 * debian/patches/java_offset_frame_extents_878934.patch:
10 - Menu selection is wrong in Java apps. (LP: #878934)
11
12 -- Omer Akram <om26er@ubuntu.com> Thu, 15 Dec 2011 23:19:22 +0500
13
1compiz (1:0.9.6+bzr20110929-0ubuntu6) oneiric-proposed; urgency=low14compiz (1:0.9.6+bzr20110929-0ubuntu6) oneiric-proposed; urgency=low
215
3 * debian/patches/rev_2821_fix_807487.patch:16 * debian/patches/rev_2821_fix_807487.patch:
417
=== added file 'debian/patches/fix_890947_synthetic_notifications.patch'
--- debian/patches/fix_890947_synthetic_notifications.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/fix_890947_synthetic_notifications.patch 2012-01-17 19:23:25 +0000
@@ -0,0 +1,43 @@
1=== modified file 'src/window.cpp'
2Index: compiz-0.9.6+bzr20110929/src/window.cpp
3===================================================================
4--- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:14.514361587 +0800
5+++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:53.314553987 +0800
6@@ -1504,7 +1504,7 @@
7 XConfigureEvent xev;
8 XWindowAttributes attrib;
9 unsigned int nchildren;
10- Window rootRet, parentRet;
11+ Window rootRet, parentRet = 0;
12 Window *children;
13
14 xev.type = ConfigureNotify;
15@@ -1526,25 +1526,9 @@
16 xev.border_width = attrib.border_width;
17 xev.above = None;
18
19- if (priv->frame)
20- {
21- XWindowAttributes fAttrib;
22- XWindowAttributes wAttrib;
23-
24- /* Add offset between wrapper and client */
25- if (XGetWindowAttributes (screen->dpy (), priv->wrapper, &wAttrib))
26- {
27- xev.x += wAttrib.x;
28- xev.y += wAttrib.y;
29- }
30-
31- /* Add offset between frame and client */
32- if (XGetWindowAttributes (screen->dpy (), priv->frame, &fAttrib))
33- {
34- xev.x += fAttrib.x;
35- xev.y += fAttrib.y;
36- }
37- }
38+ /* Translate co-ordinates to root space */
39+ XTranslateCoordinates (screen->dpy (), priv->id, screen->root (), 0, 0,
40+ &xev.x, &xev.y, &parentRet);
41
42 /* We need to ensure that the stacking order is
43 * based on the current server stacking order so
044
=== added file 'debian/patches/fix_focus_on_wrong_window_896762.patch'
--- debian/patches/fix_focus_on_wrong_window_896762.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/fix_focus_on_wrong_window_896762.patch 2012-01-17 19:23:25 +0000
@@ -0,0 +1,20 @@
1=== modified file 'src/window.cpp'
2Index: compiz-0.9.6+bzr20110929/src/window.cpp
3===================================================================
4--- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:02.906304014 +0800
5+++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:08.334330942 +0800
6@@ -2535,10 +2535,10 @@
7 if (!priv->shaded && (priv->state & CompWindowStateHiddenMask))
8 return false;
9
10- if (priv->geometry.x () + priv->width <= 0 ||
11- priv->geometry.y () + priv->height <= 0 ||
12- priv->geometry.x () >= (int) screen->width ()||
13- priv->geometry.y () >= (int) screen->height ())
14+ if (priv->serverGeometry.x () + priv->serverGeometry.width () <= 0 ||
15+ priv->serverGeometry.y () + priv->serverGeometry.height () <= 0 ||
16+ priv->serverGeometry.x () >= (int) screen->width ()||
17+ priv->serverGeometry.y () >= (int) screen->height ())
18 return false;
19
20 return true;
021
=== added file 'debian/patches/java_offset_frame_extents_878934.patch'
--- debian/patches/java_offset_frame_extents_878934.patch 1970-01-01 00:00:00 +0000
+++ debian/patches/java_offset_frame_extents_878934.patch 2012-01-17 19:23:25 +0000
@@ -0,0 +1,199 @@
1=== modified file 'plugins/decor/src/decor.cpp'
2Index: compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp
3===================================================================
4--- compiz-0.9.6+bzr20110929.orig/plugins/decor/src/decor.cpp 2011-12-15 22:47:02.878303874 +0800
5+++ compiz-0.9.6+bzr20110929/plugins/decor/src/decor.cpp 2011-12-15 22:47:14.510361578 +0800
6@@ -825,6 +825,7 @@
7 {
8 Decoration *old, *decoration = NULL;
9 bool decorate = false;
10+ bool shadowOnly = true;
11 int moveDx, moveDy;
12 int oldShiftX = 0;
13 int oldShiftY = 0;
14@@ -849,34 +850,36 @@
15 case CompWindowTypeMenuMask:
16 case CompWindowTypeNormalMask:
17 if (window->mwmDecor () & (MwmDecorAll | MwmDecorTitle))
18- decorate = (window->frame () ||
19- window->hasUnmapReference ()) ? true : false;
20+ shadowOnly = false;
21 default:
22 break;
23 }
24
25 if (window->overrideRedirect ())
26- decorate = false;
27+ shadowOnly = true;
28
29 if (window->wmType () & (CompWindowTypeDockMask | CompWindowTypeDesktopMask))
30- decorate = false;
31+ shadowOnly = true;
32
33- if (decorate)
34+ if (!shadowOnly)
35 {
36 if (!dScreen->optionGetDecorationMatch ().evaluate (window))
37- decorate = false;
38+ shadowOnly = true;
39 }
40 }
41 else
42- decorate = true;
43+ shadowOnly = false;
44+
45+ decorate = ((window->frame () ||
46+ window->hasUnmapReference ()) && !shadowOnly) ||
47+ isSwitcher;
48
49- if (decorate)
50+ if (decorate || frameExtentsRequested)
51 {
52 if (decor && checkSize (decor))
53 decoration = decor;
54 else
55 {
56-
57 if (dScreen->dmSupports & WINDOW_DECORATION_TYPE_PIXMAP &&
58 dScreen->cmActive &&
59 !(dScreen->dmSupports & WINDOW_DECORATION_TYPE_WINDOW &&
60@@ -890,6 +893,11 @@
61 else if (dScreen->dmSupports & WINDOW_DECORATION_TYPE_WINDOW)
62 decoration = &dScreen->windowDefault;
63 }
64+
65+ /* Do not allow windows which are later undecorated
66+ * to have a set _NET_FRAME_EXTENTS */
67+ if (decorate)
68+ frameExtentsRequested = false;
69 }
70 else
71 {
72@@ -944,7 +952,8 @@
73 moveDx = shiftX () - oldShiftX;
74 moveDy = shiftY () - oldShiftY;
75
76- updateFrame ();
77+ if (decorate)
78+ updateFrame ();
79 window->updateWindowOutputExtents ();
80 if (dScreen->cmActive)
81 cWindow->damageOutputExtents ();
82@@ -955,7 +964,8 @@
83 CompWindowExtents emptyExtents;
84 wd = NULL;
85
86- updateFrame ();
87+ if (decorate)
88+ updateFrame ();
89
90 memset (&emptyExtents, 0, sizeof (CompWindowExtents));
91
92@@ -1385,6 +1395,8 @@
93
94 this->dmSupports = dmSupports;
95
96+ screen->updateSupportedWmHints ();
97+
98 if (dmWin)
99 {
100 for (i = 0; i < DECOR_NUM; i++)
101@@ -2047,7 +2059,10 @@
102 {
103 screen->addSupportedAtoms (atoms);
104
105- atoms.push_back (requestFrameExtentsAtom);
106+ /* Don't support _NET_REQUEST_FRAME_EXTENTS
107+ * where there is no decorator running yet */
108+ if (dmWin)
109+ atoms.push_back (requestFrameExtentsAtom);
110 }
111
112 bool
113@@ -2155,7 +2170,8 @@
114 updateReg (true),
115 unshading (false),
116 shading (false),
117- isSwitcher (false)
118+ isSwitcher (false),
119+ frameExtentsRequested (false)
120 {
121 WindowInterface::setHandler (window);
122
123Index: compiz-0.9.6+bzr20110929/plugins/decor/src/decor.h
124===================================================================
125--- compiz-0.9.6+bzr20110929.orig/plugins/decor/src/decor.h 2011-09-29 14:53:38.000000000 +0800
126+++ compiz-0.9.6+bzr20110929/plugins/decor/src/decor.h 2011-12-15 22:47:14.510361578 +0800
127@@ -242,6 +242,8 @@
128 bool unshading;
129 bool shading;
130 bool isSwitcher;
131+
132+ bool frameExtentsRequested;
133 };
134
135 class DecorPluginVTable :
136Index: compiz-0.9.6+bzr20110929/src/window.cpp
137===================================================================
138--- compiz-0.9.6+bzr20110929.orig/src/window.cpp 2011-12-15 22:47:08.334330942 +0800
139+++ compiz-0.9.6+bzr20110929/src/window.cpp 2011-12-15 22:47:14.514361587 +0800
140@@ -6832,31 +6832,42 @@
141 priv->border.top != b->top ||
142 priv->border.bottom != b->bottom)
143 {
144- unsigned long data[4];
145-
146 priv->serverInput = *i;
147 priv->border = *b;
148
149 recalcActions ();
150
151- /* Use b for _NET_WM_FRAME_EXTENTS here because
152- * that is the representation of the actual decoration
153- * around the window that the user sees and should
154- * be used for placement and such */
155-
156- data[0] = b->left;
157- data[1] = b->right;
158- data[2] = b->top;
159- data[3] = b->bottom;
160-
161- XChangeProperty (screen->dpy (), priv->id,
162- Atoms::frameExtents,
163- XA_CARDINAL, 32, PropModeReplace,
164- (unsigned char *) data, 4);
165-
166 priv->updateSize ();
167 priv->updateFrameWindow ();
168 }
169+
170+ /* Use b for _NET_WM_FRAME_EXTENTS here because
171+ * that is the representation of the actual decoration
172+ * around the window that the user sees and should
173+ * be used for placement and such */
174+
175+ /* Also update frame extents regardless of whether or not
176+ * the frame extents actually changed, eg, a plugin could
177+ * suggest that a window has no frame extents and that it
178+ * might later get frame extents - this is mandatory if we
179+ * say that we support it, so set them
180+ * additionaly some applications might request frame extents
181+ * and we must respond by setting the property - ideally
182+ * this should only ever be done when some plugin actually
183+ * need to change the frame extents or the applications
184+ * requested it */
185+
186+ unsigned long data[4];
187+
188+ data[0] = b->left;
189+ data[1] = b->right;
190+ data[2] = b->top;
191+ data[3] = b->bottom;
192+
193+ XChangeProperty (screen->dpy (), priv->id,
194+ Atoms::frameExtents,
195+ XA_CARDINAL, 32, PropModeReplace,
196+ (unsigned char *) data, 4);
197 }
198
199 bool
0200
=== modified file 'debian/patches/series'
--- debian/patches/series 2011-10-20 14:23:52 +0000
+++ debian/patches/series 2012-01-17 19:23:25 +0000
@@ -18,3 +18,6 @@
18rev_2884_fix_874004.patch18rev_2884_fix_874004.patch
19rev_2890_fix_879253.patch19rev_2890_fix_879253.patch
20fix-886978.patch20fix-886978.patch
21fix_890947_synthetic_notifications.patch
22fix_focus_on_wrong_window_896762.patch
23java_offset_frame_extents_878934.patch

Subscribers

People subscribed via source and target branches

to all changes: