diff options
author | Romain Perier <mrpouet@gentoo.org> | 2010-01-31 16:49:45 +0000 |
---|---|---|
committer | Romain Perier <mrpouet@gentoo.org> | 2010-01-31 16:49:45 +0000 |
commit | 0a63cff2495a75a46608e84cc1c36147a26da100 (patch) | |
tree | e3bf6d2521d1c912827c76daceda6326a3acec0d /x11-wm | |
parent | Stable on amd64 wrt bug #302352 (diff) | |
download | historical-0a63cff2495a75a46608e84cc1c36147a26da100.tar.gz historical-0a63cff2495a75a46608e84cc1c36147a26da100.tar.bz2 historical-0a63cff2495a75a46608e84cc1c36147a26da100.zip |
Fix crash on opening windows, and placement mode. Replace URI per a bziped tarball, per bug #302308. Many thanks to Denilson.
Package-Manager: portage-2.2_rc62/cvs/Linux x86_64
Diffstat (limited to 'x11-wm')
-rw-r--r-- | x11-wm/compiz/ChangeLog | 12 | ||||
-rw-r--r-- | x11-wm/compiz/Manifest | 6 | ||||
-rw-r--r-- | x11-wm/compiz/compiz-0.8.4-r1.ebuild | 150 | ||||
-rw-r--r-- | x11-wm/compiz/files/compiz-0.8.4-crash-on-opening-windows.patch | 82 | ||||
-rw-r--r-- | x11-wm/compiz/files/compiz-0.8.4-place-plugin.patch | 103 |
5 files changed, 350 insertions, 3 deletions
diff --git a/x11-wm/compiz/ChangeLog b/x11-wm/compiz/ChangeLog index ddf942f6ba40..ecc330ed9d95 100644 --- a/x11-wm/compiz/ChangeLog +++ b/x11-wm/compiz/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for x11-wm/compiz -# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/x11-wm/compiz/ChangeLog,v 1.49 2009/12/20 15:20:25 mrpouet Exp $ +# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/x11-wm/compiz/ChangeLog,v 1.50 2010/01/31 16:49:44 mrpouet Exp $ + +*compiz-0.8.4-r1 (31 Jan 2010) + + 31 Jan 2010; Romain Perier <mrpouet@gentoo.org> +compiz-0.8.4-r1.ebuild, + +files/compiz-0.8.4-crash-on-opening-windows.patch, + +files/compiz-0.8.4-place-plugin.patch: + Fix crash on opening windows, and placement mode. Replace URI per a bziped + tarball, per bug #302308. Many thanks to Denilson. 20 Dec 2009; Romain Perier <mrpouet@gentoo.org> -compiz-0.8.2.ebuild: Clean up old version diff --git a/x11-wm/compiz/Manifest b/x11-wm/compiz/Manifest index 211cd43e3fb2..16ee658dcc13 100644 --- a/x11-wm/compiz/Manifest +++ b/x11-wm/compiz/Manifest @@ -2,10 +2,14 @@ AUX 0.3.6/compiz-start 1122 RMD160 6e2e0db666a9fd7648e894d9f778dcb1c59bb6c0 SHA1 AUX compiz-0.6.2-CVE-2007-3920.patch 1019 RMD160 024316c8213df5c68ceb39c404da4227cdfbf21f SHA1 adf6c10f0fa3de040704cd208d09d93b402667b8 SHA256 63b7dd520b4659f8124e3122ffeb0577c07d90539211f8383037eef744c0e5ee AUX compiz-0.7.8-framesvg.patch 3119 RMD160 315aeb6b97db26af1bc48a2fb66228b402a07823 SHA1 5706c35119691c7b466e4c3b6dc39dd5a463cddf SHA256 9d323dd2ff10848d3c2cac93b00b67cca878f77942443a96f16b82c649535a21 AUX compiz-0.8.2-gtk-gnome-missing-gconf-flags.patch 1118 RMD160 cc6920723b29f89da29c7ca5df89770cf70d94a8 SHA1 5b0e790e0a0cc304b2510de53dee7648e0ca67c1 SHA256 071a9a8032a21cd560cb68eb172b2557bb997cffc750ba8212c2fd88443d9519 +AUX compiz-0.8.4-crash-on-opening-windows.patch 2018 RMD160 b663a4ee0c6e01f140f6883910f275fb9b8c9255 SHA1 3ce56bd0fc7dba1eb936b9b30f76a5c426c06f8b SHA256 49e7c74ea45a247b203167b9761b977e6faa37e63ccde552823cb6f2df87379c +AUX compiz-0.8.4-place-plugin.patch 3674 RMD160 b99a356b19a2e1df4346ce5f8b49522d2c7df1a5 SHA1 3feed76f30616d61d2baab103191fe0d93289757 SHA256 1e6a8b945b20909cb492755fd7732252e506c2ba2136b5253cde5dc59d5375f0 AUX compiz-manager 9835 RMD160 0c579ebd41c22b4f33edb2d2d5b1e41ac30720ac SHA1 ff39aa8abf43e42895aec6696c3659773f927fd2 SHA256 e387ff9f01b84c572f31643316ed2ce2eacd11a92488e745ebcfd659945c6f1d AUX compiz-no-gconf.patch 630 RMD160 32b6990dff7baf7f3cb04f728ab04d1523f29c46 SHA1 ad1c0a38dcb83c4768031f0b87db4748b2c24b92 SHA256 87467fbe5d4e0d0bb8952f2d5b74d21046d92d49772543aeda137266e055aa67 AUX compiz.desktop 273 RMD160 704f0e631cd41d810af323b5fabbbf7eac5a943b SHA1 e244587cc28613ab92568846754e91bb193f0e85 SHA256 28a5459148c7733cdd82e3ecc1f584231d2619c7305b8bf71060db331bf081fb +DIST compiz-0.8.4.tar.bz2 1131583 RMD160 3ba6606e75f8d4acda669cf633f1eb1dffd8c512 SHA1 be7911abb8a695423d7e83e5803217985837ee0e SHA256 b02bf0d2ad3ddf5dbf82ff3eb3174f3f9336bde1c5dffd44cfc007fb7e2fe924 DIST compiz-0.8.4.tar.gz 1755741 RMD160 176bfa04b8ee3ee3c5b7e6f3c27c88d16c54ac63 SHA1 244ac823818209e44944d74df42d8986ec31d9dd SHA256 22b1f06a458f8eefc9ef511f78a55887fcd456e0fe5bb7574eefcf624146ecf6 +EBUILD compiz-0.8.4-r1.ebuild 3633 RMD160 24cf497f64b593bad46d9ec06c8d67d0a1d7b85d SHA1 b038a4ccb7f11adb361261f7d9e91107b3f6a94a SHA256 49e6d3321d121fc0e79b3a3afac120a813f6e54ef992761a3a5dbfa3fc176945 EBUILD compiz-0.8.4.ebuild 3495 RMD160 fc23273fc67cf19f91659f6d67f0c30d59d58b00 SHA1 ed4bbdb48f8852bf88ddf80d83e1b6bb9356ec1c SHA256 550e26f937b73a00564fe25426bab76fee43ef184a6305c8d917eb9f1eb1f8d0 -MISC ChangeLog 8653 RMD160 235f37a8e20891e5b1a94015692ef3a84082aa01 SHA1 e8a55bab781cc456122d4724516d88e92c055899 SHA256 80b04bd0f5597e08c0b28348ea11593f943b17733864cf8a3e8fdbf7c50037fb +MISC ChangeLog 8987 RMD160 01384f0cc142f9ac96cb4706978ba54e7efb52cb SHA1 8871a49fccd8a505504a38a0c9037a026d657c3f SHA256 389143c185dd870fc94b56c0c45ad9a836aee0c56faa0c05f3d25b630d9a59c6 MISC metadata.xml 417 RMD160 321a21e2a068ad32b4a745d8e7fa7cc5b66b7c97 SHA1 47c7d29e48ccc0b9a4df2e33a1daad25dd7b20ad SHA256 2b61799ce14880f39c0f4ef065a412c02f760c67e2f831f18990f34bdcf731e6 diff --git a/x11-wm/compiz/compiz-0.8.4-r1.ebuild b/x11-wm/compiz/compiz-0.8.4-r1.ebuild new file mode 100644 index 000000000000..cf35ca2399b4 --- /dev/null +++ b/x11-wm/compiz/compiz-0.8.4-r1.ebuild @@ -0,0 +1,150 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-wm/compiz/compiz-0.8.4-r1.ebuild,v 1.1 2010/01/31 16:49:44 mrpouet Exp $ + +EAPI="2" + +inherit autotools eutils gnome2-utils + +DESCRIPTION="3D composite and windowmanager" +HOMEPAGE="http://www.compiz.org/" +SRC_URI="http://releases.compiz.org/${PV}/${P}.tar.bz2" + +LICENSE="GPL-2 LGPL-2.1 MIT" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +IUSE="+cairo dbus fuse gnome gtk kde +svg" + +DEPEND=" + dev-libs/glib:2 + dev-libs/libxml2 + dev-libs/libxslt + media-libs/libpng + >=media-libs/mesa-6.5.1-r1 + >=x11-base/xorg-server-1.1.1-r1 + x11-libs/libX11[xcb] + x11-libs/libxcb + x11-libs/libXcomposite + x11-libs/libXdamage + x11-libs/libXinerama + x11-libs/libXrandr + x11-libs/libICE + x11-libs/libSM + >=x11-libs/libXrender-0.8.4 + >=x11-libs/startup-notification-0.7 + cairo? ( + x11-libs/cairo[X] + ) + dbus? ( >=sys-apps/dbus-1.0 ) + fuse? ( sys-fs/fuse ) + gnome? ( + >=gnome-base/gnome-control-center-2.16.1:2 + gnome-base/gnome-desktop + gnome-base/gconf:2 + ) + gtk? ( + >=x11-libs/gtk+-2.8.0:2 + >=x11-libs/libwnck-2.18.3 + x11-libs/pango + ) + kde? ( + || ( + >=kde-base/kwin-4.2.0 + kde-base/kwin:live + ) + ) + svg? ( + >=gnome-base/librsvg-2.14.0:2 + >=x11-libs/cairo-1.0 + ) +" + +RDEPEND="${DEPEND} + x11-apps/mesa-progs + x11-apps/xvinfo" + +DEPEND="${DEPEND} + dev-util/pkgconfig + x11-proto/damageproto + x11-proto/xineramaproto" + +src_prepare() { + + echo "gtk/gnome/compiz-wm.desktop.in" >> "${S}/po/POTFILES.skip" + echo "metadata/core.xml.in" >> "${S}/po/POTFILES.skip" + + # Missing gconf flags, fix bug #282807 + epatch "${FILESDIR}"/${PN}-0.8.2-gtk-gnome-missing-gconf-flags.patch + + # 2 bugfixes, per bug #302308 + epatch "${FILESDIR}"/${P}-crash-on-opening-windows.patch + epatch "${FILESDIR}"/${P}-place-plugin.patch + + if ! use gnome; then + epatch "${FILESDIR}"/${PN}-no-gconf.patch + fi + eautoreconf +} + +src_configure() { + econf --disable-dependency-tracking \ + --disable-gnome-keybindings \ + --enable-librsvg \ + --with-default-plugins \ + $(use_enable cairo annotate) \ + $(use_enable dbus) \ + $(use_enable dbus dbus-glib) \ + $(use_enable fuse) \ + $(use_enable gnome) \ + $(use_enable gnome gconf) \ + $(use_enable gnome metacity) \ + $(use_enable gtk) \ + $(use_enable kde kde4) \ + --disable-kde +} + +src_install() { + emake DESTDIR="${D}" install || die "emake install failed" + + # Install compiz-manager + dobin "${FILESDIR}/compiz-manager" || die "dobin failed" + + # Add the full-path to lspci + sed -i "s#lspci#/usr/sbin/lspci#" "${D}/usr/bin/compiz-manager" || die "sed 1 failed" + + # Fix the hardcoded lib paths + sed -i "s#/lib/#/$(get_libdir)/#g" "${D}/usr/bin/compiz-manager" || die "sed 2 failed" + + # Create gentoo's config file + dodir /etc/xdg/compiz || die "dodir failed" + + cat <<- EOF > "${D}/etc/xdg/compiz/compiz-manager" + COMPIZ_BIN_PATH="/usr/bin/" + PLUGIN_PATH="/usr/$(get_libdir)/compiz/" + LIBGL_NVIDIA="/usr/$(get_libdir)/opengl/xorg-x11/lib/libGL.so.1.2" + LIBGL_FGLRX="/usr/$(get_libdir)/opengl/xorg-x11/lib/libGL.so.1.2" + KWIN="$(type -p kwin)" + METACITY="$(type -p metacity)" + SKIP_CHECKS="yes" + EOF + + dodoc AUTHORS ChangeLog NEWS README TODO || die "dodoc failed" + + insinto "/usr/share/applications" + doins "${FILESDIR}/compiz.desktop" || die "Failed to install compiz.desktop" +} + +pkg_preinst() { + use gnome && gnome2_gconf_savelist +} + +pkg_postinst() { + use gnome && gnome2_gconf_install + + ewarn "If you update to x11-wm/metacity-2.24 after you install ${P}," + ewarn "gtk-window-decorator will crash until you reinstall ${PN} again." +} + +pkg_prerm() { + use gnome && gnome2_gconf_uninstall +} diff --git a/x11-wm/compiz/files/compiz-0.8.4-crash-on-opening-windows.patch b/x11-wm/compiz/files/compiz-0.8.4-crash-on-opening-windows.patch new file mode 100644 index 000000000000..17a0c70a0fd1 --- /dev/null +++ b/x11-wm/compiz/files/compiz-0.8.4-crash-on-opening-windows.patch @@ -0,0 +1,82 @@ +From 43c269a377e7b446fb1bb70732835b7395ce9524 Mon Sep 17 00:00:00 2001 +From: Danny Baumann <dannybaumann@web.de> +Date: Mon, 25 Jan 2010 06:28:34 +0000 +Subject: Fix crash on opening windows. + +We must defer match evaluation until window initialization has finished +for all plugins as match evaluation means wrapped function calls. +--- +diff --git a/plugins/obs.c b/plugins/obs.c +index a8d67f1..0f5b9d0 100644 +--- a/plugins/obs.c ++++ b/plugins/obs.c +@@ -88,6 +88,8 @@ typedef struct _ObsWindow + { + int customFactor[MODIFIER_COUNT]; + int matchFactor[MODIFIER_COUNT]; ++ ++ CompTimeoutHandle updateHandle; + } ObsWindow; + + #define GET_OBS_DISPLAY(d) \ +@@ -323,6 +325,22 @@ obsMatchPropertyChanged (CompDisplay *d, + WRAP (od, d, matchPropertyChanged, obsMatchPropertyChanged); + } + ++static Bool ++obsUpdateWindow (void *closure) ++{ ++ CompWindow *w = (CompWindow *) closure; ++ int i; ++ ++ OBS_WINDOW (w); ++ ++ for (i = 0; i < MODIFIER_COUNT; i++) ++ updatePaintModifier (w, i); ++ ++ ow->updateHandle = 0; ++ ++ return FALSE; ++} ++ + static CompOption * + obsGetDisplayOptions (CompPlugin *p, + CompDisplay *display, +@@ -628,8 +646,8 @@ static CompBool + obsInitWindow (CompPlugin *p, + CompWindow *w) + { +- ObsWindow *ow; +- int i; ++ ObsWindow *ow; ++ int i; + + OBS_SCREEN (w->screen); + +@@ -643,10 +661,11 @@ obsInitWindow (CompPlugin *p, + ow->matchFactor[i] = 100; + } + +- w->base.privates[os->windowPrivateIndex].ptr = ow; ++ /* defer initializing the factors from window matches as match evalution ++ means wrapped function calls */ ++ ow->updateHandle = compAddTimeout (0, 0, obsUpdateWindow, w); + +- for (i = 0; i < MODIFIER_COUNT; i++) +- updatePaintModifier (w, i); ++ w->base.privates[os->windowPrivateIndex].ptr = ow; + + return TRUE; + } +@@ -657,6 +676,9 @@ obsFiniWindow (CompPlugin *p, + { + OBS_WINDOW (w); + ++ if (ow->updateHandle) ++ compRemoveTimeout (ow->updateHandle); ++ + free (ow); + } + +-- +cgit v0.8.2 diff --git a/x11-wm/compiz/files/compiz-0.8.4-place-plugin.patch b/x11-wm/compiz/files/compiz-0.8.4-place-plugin.patch new file mode 100644 index 000000000000..ee258eb09714 --- /dev/null +++ b/x11-wm/compiz/files/compiz-0.8.4-place-plugin.patch @@ -0,0 +1,103 @@ +From db88fb6f3f6c0fa3c81bc04a2a3468252d49f098 Mon Sep 17 00:00:00 2001 +From: Danny Baumann <dannybaumann@web.de> +Date: Sun, 31 Jan 2010 12:36:42 +0000 +Subject: Fix handling of windows that have a server border set. + +Also handle windows that have a server border set properly in pointer +(placement mode) + +--- +diff --git a/plugins/place.c b/plugins/place.c +index d59de33..a54e60a 100644 +--- a/plugins/place.c ++++ b/plugins/place.c +@@ -131,12 +131,15 @@ typedef enum { + + /* helper macros to get the full dimensions of a window, + including decorations */ ++#define BORDER_WIDTH(w) ((w)->input.left + (w)->input.right + \ ++ 2 * (w)->serverBorderWidth) ++#define BORDER_HEIGHT(w) ((w)->input.top + (w)->input.bottom + \ ++ 2 * (w)->serverBorderWidth) ++ + #define WIN_FULL_X(w) ((w)->serverX - (w)->input.left) + #define WIN_FULL_Y(w) ((w)->serverY - (w)->input.top) +-#define WIN_FULL_W(w) ((w)->serverWidth + 2 * (w)->serverBorderWidth + \ +- (w)->input.left + (w)->input.right) +-#define WIN_FULL_H(w) ((w)->serverHeight + 2 * (w)->serverBorderWidth + \ +- (w)->input.top + (w)->input.bottom) ++#define WIN_FULL_W(w) ((w)->serverWidth + BORDER_WIDTH (w)) ++#define WIN_FULL_H(w) ((w)->serverHeight + BORDER_HEIGHT (w)) + + static Bool + placeMatchXYValue (CompWindow *w, +@@ -1216,8 +1219,8 @@ placeConstrainToWorkarea (CompWindow *w, + + extents.left = *x - w->input.left; + extents.top = *y - w->input.top; +- extents.right = *x + w->serverWidth + w->input.right; +- extents.bottom = *y + w->serverHeight + w->input.bottom; ++ extents.right = extents.left + WIN_FULL_W (w); ++ extents.bottom = extents.top + WIN_FULL_H (w); + + delta = workArea->x + workArea->width - extents.right; + if (delta < 0) +@@ -1419,9 +1422,9 @@ placeDoValidateWindowResizeRequest (CompWindow *w, + } + + left = x - w->input.left; +- right = x + xwc->width + w->input.right; ++ right = left + xwc->width + BORDER_WIDTH (w); + top = y - w->input.top; +- bottom = y + xwc->height + w->input.bottom; ++ bottom = top + xwc->height + BORDER_HEIGHT (w); + + output = outputDeviceForGeometry (s, + xwc->x, xwc->y, +@@ -1484,9 +1487,9 @@ placeDoValidateWindowResizeRequest (CompWindow *w, + + /* bring left/right/top/bottom to actual window coordinates */ + left += w->input.left; +- right -= w->input.right; ++ right -= w->input.right + 2 * w->serverBorderWidth; + top += w->input.top; +- bottom -= w->input.bottom; ++ bottom -= w->input.bottom + 2 * w->serverBorderWidth; + + if ((right - left) != xwc->width) + { +@@ -1886,17 +1889,13 @@ placeDoHandleScreenSizeChange (CompScreen *s, + { + mask |= CWX | CWWidth; + xwc.x = vpX * s->width + workArea.x + w->input.left; +- xwc.width = workArea.width - +- (2 * w->serverBorderWidth + +- w->input.left + w->input.right); ++ xwc.width = workArea.width - BORDER_WIDTH (w); + } + if (w->state & CompWindowStateMaximizedVertMask) + { + mask |= CWY | CWHeight; + xwc.y = vpY * s->height + workArea.y + w->input.top; +- xwc.height = workArea.height - +- (2 * w->serverBorderWidth + +- w->input.top + w->input.bottom); ++ xwc.height = workArea.height - BORDER_HEIGHT (w); + } + } + } +--- a/plugins/place.c ++++ b/plugins/place.c +@@ -847,8 +847,8 @@ placePointer (CompWindow *w, + + if (placeGetPointerPosition (w->screen, &xPointer, &yPointer)) + { +- *x = xPointer - (w->serverWidth / 2); +- *y = yPointer - (w->serverHeight / 2); ++ *x = xPointer - (w->serverWidth / 2) - w->serverBorderWidth; ++ *y = yPointer - (w->serverHeight / 2) - w->serverBorderWidth; + } + else + { +-- +cgit v0.8.2 |