summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2011-09-13 20:12:33 +0000
committerAndreas K. Hüttel <dilfridge@gentoo.org>2011-09-13 20:12:33 +0000
commitf84d49590d5e72ff5709b8096184f0439c4a0b02 (patch)
tree82b5f0dd4a485c6a45b20c364c36694e90ca2561 /kde-base
parentTake over as maintainer. (diff)
downloadgentoo-2-f84d49590d5e72ff5709b8096184f0439c4a0b02.tar.gz
gentoo-2-f84d49590d5e72ff5709b8096184f0439c4a0b02.tar.bz2
gentoo-2-f84d49590d5e72ff5709b8096184f0439c4a0b02.zip
Add serious performance improvement from upstream
(Portage version: 2.1.10.15/cvs/Linux x86_64)
Diffstat (limited to 'kde-base')
-rw-r--r--kde-base/kwin/ChangeLog8
-rw-r--r--kde-base/kwin/files/kwin-4.7.1-performance.patch91
-rw-r--r--kde-base/kwin/kwin-4.7.1-r1.ebuild67
3 files changed, 165 insertions, 1 deletions
diff --git a/kde-base/kwin/ChangeLog b/kde-base/kwin/ChangeLog
index 82f9cc7156e8..575765cb05cf 100644
--- a/kde-base/kwin/ChangeLog
+++ b/kde-base/kwin/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for kde-base/kwin
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/ChangeLog,v 1.241 2011/09/07 20:13:56 alexxy Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/ChangeLog,v 1.242 2011/09/13 20:12:33 dilfridge Exp $
+
+*kwin-4.7.1-r1 (13 Sep 2011)
+
+ 13 Sep 2011; Andreas K. Huettel <dilfridge@gentoo.org> +kwin-4.7.1-r1.ebuild,
+ +files/kwin-4.7.1-performance.patch:
+ Add serious performance improvement from upstream
*kwin-4.7.1 (07 Sep 2011)
diff --git a/kde-base/kwin/files/kwin-4.7.1-performance.patch b/kde-base/kwin/files/kwin-4.7.1-performance.patch
new file mode 100644
index 000000000000..a34c77e5c828
--- /dev/null
+++ b/kde-base/kwin/files/kwin-4.7.1-performance.patch
@@ -0,0 +1,91 @@
+commit e142a1a142cbc8b87f021223e6abc947f456a7f9
+Author: Thomas Lübking <thomas.luebking@gmail.com>
+Date: Thu Sep 8 22:20:35 2011 +0200
+
+ replace non-const QVector::operator[] accesses with const ::at() to avoid maaany deep vecor copies
+
+diff --git a/kwin/effects.cpp b/kwin/effects.cpp
+index e0c76cb..f5863fc0 100644
+--- a/kwin/effects.cpp
++++ b/kwin/effects.cpp
+@@ -200,7 +200,7 @@ void EffectsHandlerImpl::reconfigure()
+ void EffectsHandlerImpl::prePaintScreen(ScreenPrePaintData& data, int time)
+ {
+ if (current_paint_screen < loaded_effects.size()) {
+- loaded_effects[current_paint_screen++].second->prePaintScreen(data, time);
++ loaded_effects.at(current_paint_screen++).second->prePaintScreen(data, time);
+ --current_paint_screen;
+ }
+ // no special final code
+@@ -209,7 +209,7 @@ void EffectsHandlerImpl::prePaintScreen(ScreenPrePaintData& data, int time)
+ void EffectsHandlerImpl::paintScreen(int mask, QRegion region, ScreenPaintData& data)
+ {
+ if (current_paint_screen < loaded_effects.size()) {
+- loaded_effects[current_paint_screen++].second->paintScreen(mask, region, data);
++ loaded_effects.at(current_paint_screen++).second->paintScreen(mask, region, data);
+ --current_paint_screen;
+ } else
+ scene->finalPaintScreen(mask, region, data);
+@@ -218,7 +218,7 @@ void EffectsHandlerImpl::paintScreen(int mask, QRegion region, ScreenPaintData&
+ void EffectsHandlerImpl::postPaintScreen()
+ {
+ if (current_paint_screen < loaded_effects.size()) {
+- loaded_effects[current_paint_screen++].second->postPaintScreen();
++ loaded_effects.at(current_paint_screen++).second->postPaintScreen();
+ --current_paint_screen;
+ }
+ // no special final code
+@@ -227,7 +227,7 @@ void EffectsHandlerImpl::postPaintScreen()
+ void EffectsHandlerImpl::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time)
+ {
+ if (current_paint_window < loaded_effects.size()) {
+- loaded_effects[current_paint_window++].second->prePaintWindow(w, data, time);
++ loaded_effects.at(current_paint_window++).second->prePaintWindow(w, data, time);
+ --current_paint_window;
+ }
+ // no special final code
+@@ -236,7 +236,7 @@ void EffectsHandlerImpl::prePaintWindow(EffectWindow* w, WindowPrePaintData& dat
+ void EffectsHandlerImpl::paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data)
+ {
+ if (current_paint_window < loaded_effects.size()) {
+- loaded_effects[current_paint_window++].second->paintWindow(w, mask, region, data);
++ loaded_effects.at(current_paint_window++).second->paintWindow(w, mask, region, data);
+ --current_paint_window;
+ } else
+ scene->finalPaintWindow(static_cast<EffectWindowImpl*>(w), mask, region, data);
+@@ -245,7 +245,7 @@ void EffectsHandlerImpl::paintWindow(EffectWindow* w, int mask, QRegion region,
+ void EffectsHandlerImpl::paintEffectFrame(EffectFrame* frame, QRegion region, double opacity, double frameOpacity)
+ {
+ if (current_paint_effectframe < loaded_effects.size()) {
+- loaded_effects[current_paint_effectframe++].second->paintEffectFrame(frame, region, opacity, frameOpacity);
++ loaded_effects.at(current_paint_effectframe++).second->paintEffectFrame(frame, region, opacity, frameOpacity);
+ --current_paint_effectframe;
+ } else {
+ const EffectFrameImpl* frameImpl = static_cast<const EffectFrameImpl*>(frame);
+@@ -256,7 +256,7 @@ void EffectsHandlerImpl::paintEffectFrame(EffectFrame* frame, QRegion region, do
+ void EffectsHandlerImpl::postPaintWindow(EffectWindow* w)
+ {
+ if (current_paint_window < loaded_effects.size()) {
+- loaded_effects[current_paint_window++].second->postPaintWindow(w);
++ loaded_effects.at(current_paint_window++).second->postPaintWindow(w);
+ --current_paint_window;
+ }
+ // no special final code
+@@ -273,7 +273,7 @@ bool EffectsHandlerImpl::provides(Effect::Feature ef)
+ void EffectsHandlerImpl::drawWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data)
+ {
+ if (current_draw_window < loaded_effects.size()) {
+- loaded_effects[current_draw_window++].second->drawWindow(w, mask, region, data);
++ loaded_effects.at(current_draw_window++).second->drawWindow(w, mask, region, data);
+ --current_draw_window;
+ } else
+ scene->finalDrawWindow(static_cast<EffectWindowImpl*>(w), mask, region, data);
+@@ -282,7 +282,7 @@ void EffectsHandlerImpl::drawWindow(EffectWindow* w, int mask, QRegion region, W
+ void EffectsHandlerImpl::buildQuads(EffectWindow* w, WindowQuadList& quadList)
+ {
+ if (current_build_quads < loaded_effects.size()) {
+- loaded_effects[current_build_quads++].second->buildQuads(w, quadList);
++ loaded_effects.at(current_build_quads++).second->buildQuads(w, quadList);
+ --current_build_quads;
+ }
+ }
diff --git a/kde-base/kwin/kwin-4.7.1-r1.ebuild b/kde-base/kwin/kwin-4.7.1-r1.ebuild
new file mode 100644
index 000000000000..c39eb07fa9a2
--- /dev/null
+++ b/kde-base/kwin/kwin-4.7.1-r1.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/kwin-4.7.1-r1.ebuild,v 1.1 2011/09/13 20:12:33 dilfridge Exp $
+
+EAPI=4
+
+KMNAME="kde-workspace"
+OPENGL_REQUIRED="optional"
+inherit kde4-meta
+
+DESCRIPTION="KDE window manager"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="debug gles xinerama"
+
+COMMONDEPEND="
+ $(add_kdebase_dep kephal)
+ $(add_kdebase_dep libkworkspace)
+ $(add_kdebase_dep liboxygenstyle)
+ x11-libs/libXcomposite
+ x11-libs/libXdamage
+ x11-libs/libXfixes
+ >=x11-libs/libXrandr-1.2.1
+ x11-libs/libXrender
+ opengl? ( >=media-libs/mesa-7.10 )
+ gles? ( >=media-libs/mesa-7.10[egl(+),gles] )
+ xinerama? ( x11-libs/libXinerama )
+"
+DEPEND="${COMMONDEPEND}
+ x11-proto/compositeproto
+ x11-proto/damageproto
+ x11-proto/fixesproto
+ x11-proto/randrproto
+ x11-proto/renderproto
+ xinerama? ( x11-proto/xineramaproto )
+"
+RDEPEND="${COMMONDEPEND}
+ x11-apps/scripts
+"
+
+KMEXTRACTONLY="
+ ksmserver/
+ libs/kephal/
+ libs/oxygen/
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-4.4.2-xinerama_cmake_automagic.patch"
+ "${FILESDIR}/${PN}-4.7.1-performance.patch"
+)
+
+# you can use just gles or opengl or none
+REQUIRED_USE="opengl? ( !gles ) gles? ( !opengl )"
+
+src_configure() {
+ # FIXME Remove when activity API moved away from libkworkspace
+ append-cppflags "-I${EPREFIX}/usr/include/kworkspace"
+
+ mycmakeargs=(
+ $(cmake-utils_use_with gles OpenGLES)
+ $(cmake-utils_use gles KWIN_BUILD_WITH_OPENGLES)
+ $(cmake-utils_use_with opengl OpenGL)
+ $(cmake-utils_use_with xinerama X11_Xinerama)
+ -DWITH_X11_Xcomposite=ON
+ )
+
+ kde4-meta_src_configure
+}