summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas K. Hüttel <dilfridge@gentoo.org>2013-03-22 22:41:47 +0000
committerAndreas K. Hüttel <dilfridge@gentoo.org>2013-03-22 22:41:47 +0000
commit58e9abd0a5a05e98748239f5100f5b2edeb2cdb5 (patch)
treea2f4bea071099ce620f9a1e67d5f0be3c2f3ce4e /kde-base/kwin
parentWe need the bugfix in qtcore here, see bug 450818 (diff)
downloadgentoo-2-58e9abd0a5a05e98748239f5100f5b2edeb2cdb5.tar.gz
gentoo-2-58e9abd0a5a05e98748239f5100f5b2edeb2cdb5.tar.bz2
gentoo-2-58e9abd0a5a05e98748239f5100f5b2edeb2cdb5.zip
Backport patch fixing window tracking, bug 461836
(Portage version: 2.2.0_alpha168/cvs/Linux x86_64, signed Manifest commit with key EBE6A336BE19039C!)
Diffstat (limited to 'kde-base/kwin')
-rw-r--r--kde-base/kwin/ChangeLog8
-rw-r--r--kde-base/kwin/files/kwin-4.10.1-unref.patch90
-rw-r--r--kde-base/kwin/kwin-4.10.1-r2.ebuild (renamed from kde-base/kwin/kwin-4.10.1.ebuild)7
3 files changed, 103 insertions, 2 deletions
diff --git a/kde-base/kwin/ChangeLog b/kde-base/kwin/ChangeLog
index 3b40dc14912b..cf639351b89e 100644
--- a/kde-base/kwin/ChangeLog
+++ b/kde-base/kwin/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for kde-base/kwin
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/ChangeLog,v 1.313 2013/03/09 19:44:29 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/ChangeLog,v 1.314 2013/03/22 22:41:47 dilfridge Exp $
+
+*kwin-4.10.1-r2 (22 Mar 2013)
+
+ 22 Mar 2013; Andreas K. Huettel <dilfridge@gentoo.org> -kwin-4.10.1.ebuild,
+ +kwin-4.10.1-r2.ebuild, +files/kwin-4.10.1-unref.patch:
+ Backport patch fixing window tracking, bug 461836
*kwin-4.10.1-r1 (09 Mar 2013)
diff --git a/kde-base/kwin/files/kwin-4.10.1-unref.patch b/kde-base/kwin/files/kwin-4.10.1-unref.patch
new file mode 100644
index 000000000000..ebbbd117b47c
--- /dev/null
+++ b/kde-base/kwin/files/kwin-4.10.1-unref.patch
@@ -0,0 +1,90 @@
+From 342f3a9ff2d9587601039605e42df873fa7b75a3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Thomas=20L=C3=BCbking?= <thomas.luebking@gmail.com>
+Date: Mon, 11 Mar 2013 16:19:16 +0100
+Subject: [PATCH] keep + track m_closeWindow to keep m_winData alive
+
+BUG: 259640
+FIXED-IN: 4.10.2
+REVIEW: 109509
+---
+ kwin/effects/presentwindows/presentwindows.cpp | 26 ++++++++++++++++++++------
+ 1 file changed, 20 insertions(+), 6 deletions(-)
+
+diff --git a/kwin/effects/presentwindows/presentwindows.cpp b/kwin/effects/presentwindows/presentwindows.cpp
+index 7a59aec..79baadb 100755
+--- a/kwin/effects/presentwindows/presentwindows.cpp
++++ b/kwin/effects/presentwindows/presentwindows.cpp
+@@ -64,6 +64,7 @@ PresentWindowsEffect::PresentWindowsEffect()
+ , m_highlightedWindow(NULL)
+ , m_filterFrame(NULL)
+ , m_closeView(NULL)
++ , m_closeWindow(NULL)
+ , m_dragInProgress(false)
+ , m_dragWindow(NULL)
+ , m_highlightedDropTarget(NULL)
+@@ -217,7 +218,7 @@ void PresentWindowsEffect::postPaintScreen()
+ {
+ if (m_motionManager.areWindowsMoving())
+ effects->addRepaintFull();
+- else if (!m_activated && m_motionManager.managingWindows()) {
++ else if (!m_activated && m_motionManager.managingWindows() && !m_closeWindow) {
+ // We have finished moving them back, stop processing
+ m_motionManager.unmanageAll();
+
+@@ -261,7 +262,7 @@ void PresentWindowsEffect::prePaintWindow(EffectWindow *w, WindowPrePaintData &d
+ {
+ // TODO: We should also check to see if any windows are fading just in case fading takes longer
+ // than moving the windows when the effect is deactivated.
+- if (m_activated || m_motionManager.areWindowsMoving()) {
++ if (m_activated || m_motionManager.areWindowsMoving() || m_closeWindow) {
+ DataHash::iterator winData = m_windowData.find(w);
+ if (winData == m_windowData.end()) {
+ effects->prePaintWindow(w, data, time);
+@@ -306,6 +307,9 @@ void PresentWindowsEffect::prePaintWindow(EffectWindow *w, WindowPrePaintData &d
+ // we have to keep the window in the list to prevent flickering
+ winData->referenced = false;
+ w->unrefWindow();
++ if (w == m_closeWindow) {
++ m_closeWindow = NULL;
++ }
+ } else
+ w->enablePainting(EffectWindow::PAINT_DISABLED_BY_DELETE);
+ }
+@@ -437,6 +441,15 @@ void PresentWindowsEffect::slotWindowAdded(EffectWindow *w)
+ rearrangeWindows();
+ }
+ if (m_closeView && w == effects->findWindow(m_closeView->winId())) {
++ if (m_closeWindow != w) {
++ DataHash::iterator winDataIt = m_windowData.find(m_closeWindow);
++ if (winDataIt != m_windowData.end()) {
++ if (winDataIt->referenced) {
++ m_closeWindow->unrefWindow();
++ }
++ m_windowData.erase(winDataIt);
++ }
++ }
+ winData->visible = true;
+ winData->highlight = 1.0;
+ m_closeWindow = w;
+@@ -452,13 +465,14 @@ void PresentWindowsEffect::slotWindowClosed(EffectWindow *w)
+ if (winData == m_windowData.end())
+ return;
+ winData->deleted = true;
+- winData->referenced = true;
+- w->refWindow();
++ if (!winData->referenced) {
++ winData->referenced = true;
++ w->refWindow();
++ }
+ if (m_highlightedWindow == w)
+ setHighlightedWindow(findFirstWindow());
+ if (m_closeWindow == w) {
+- m_closeWindow = 0;
+- return; // don't rearrange
++ return; // don't rearrange, get's nulled when unref'd
+ }
+ rearrangeWindows();
+
+--
+1.8.1.5
+
diff --git a/kde-base/kwin/kwin-4.10.1.ebuild b/kde-base/kwin/kwin-4.10.1-r2.ebuild
index 3ea0f165c091..3e6ea21302b3 100644
--- a/kde-base/kwin/kwin-4.10.1.ebuild
+++ b/kde-base/kwin/kwin-4.10.1-r2.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/kwin-4.10.1.ebuild,v 1.1 2013/03/06 13:41:54 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/kwin-4.10.1-r2.ebuild,v 1.1 2013/03/22 22:41:47 dilfridge Exp $
EAPI=5
@@ -49,6 +49,11 @@ KMEXTRACTONLY="
# you need one of these
REQUIRED_USE="!opengl? ( gles ) !gles? ( opengl )"
+PATCHES=(
+ "${FILESDIR}/${P}-nulluuid.patch"
+ "${FILESDIR}/${P}-unref.patch"
+)
+
src_configure() {
# FIXME Remove when activity API moved away from libkworkspace
append-cppflags "-I${EPREFIX}/usr/include/kworkspace"