summaryrefslogtreecommitdiff
path: root/x11
diff options
context:
space:
mode:
authormarkd <markd>2009-02-11 07:46:15 +0000
committermarkd <markd>2009-02-11 07:46:15 +0000
commitebabc887b157ba93c3cf1b537bc32c81e38bbbc3 (patch)
tree7ebdea19337dab8337e962714726f1cbc253026b /x11
parentb17a0de5fd0619abd224c8f1c5626cfd82dd6b3e (diff)
downloadpkgsrc-ebabc887b157ba93c3cf1b537bc32c81e38bbbc3.tar.gz
Add patch from qt-copy. Fixes random crashes seen in kde4's kmail.
Bump PKGREVISION.
Diffstat (limited to 'x11')
-rw-r--r--x11/qt4-libs/Makefile4
-rw-r--r--x11/qt4-libs/distinfo3
-rw-r--r--x11/qt4-libs/patches/patch-au40
3 files changed, 44 insertions, 3 deletions
diff --git a/x11/qt4-libs/Makefile b/x11/qt4-libs/Makefile
index 2f2fb02e345..ec2255e1b4c 100644
--- a/x11/qt4-libs/Makefile
+++ b/x11/qt4-libs/Makefile
@@ -1,11 +1,11 @@
-# $NetBSD: Makefile,v 1.26 2008/12/17 10:43:06 wiz Exp $
+# $NetBSD: Makefile,v 1.27 2009/02/11 07:46:15 markd Exp $
PKG_DESTDIR_SUPPORT= user-destdir
.include "../../x11/qt4-libs/Makefile.common"
PKGNAME= qt4-libs-${QTVERSION}
-PKGREVISION= 2
+PKGREVISION= 3
COMMENT= C++ X GUI toolkit
BUILD_TARGET= sub-src
diff --git a/x11/qt4-libs/distinfo b/x11/qt4-libs/distinfo
index b87eccde8cc..0d4387e3c17 100644
--- a/x11/qt4-libs/distinfo
+++ b/x11/qt4-libs/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.25 2008/10/26 14:02:33 adam Exp $
+$NetBSD: distinfo,v 1.26 2009/02/11 07:46:15 markd Exp $
SHA1 (qt-x11-opensource-src-4.4.3.tar.bz2) = 099bcc2dfda73f093f7e80e9004114d41db40b51
RMD160 (qt-x11-opensource-src-4.4.3.tar.bz2) = 3c73d9c549523efa0e760965c38c7876b4636861
@@ -22,3 +22,4 @@ SHA1 (patch-aq) = 401bf595bfe3854e36b0260d24be95b712f9d6a2
SHA1 (patch-ar) = 5bc9a1d384c9a888f1295b87968a09236b48af65
SHA1 (patch-as) = 244a3017e2780270b61ac50af000cd6fd1bb9cf5
SHA1 (patch-at) = c8c818dcf45822c8510568bc738b819493f38b11
+SHA1 (patch-au) = 0d816fc2c359cf8fdea039b9307faf8e4651f608
diff --git a/x11/qt4-libs/patches/patch-au b/x11/qt4-libs/patches/patch-au
new file mode 100644
index 00000000000..409ae8f9985
--- /dev/null
+++ b/x11/qt4-libs/patches/patch-au
@@ -0,0 +1,40 @@
+qt-bugs@ issue : N227209
+Trolltech task ID : none yet
+bugs.kde.org number : 174065
+applied: yes
+author: Szymon Tomasz Stefanek <s.stefanek@gmail.com>
+
+This patch fixes a crash deep inside the qt painting engine.
+
+The toplevel shared painter is instantiated by the topmost window
+which "owns" the backingstore buffer. The topmost window then recursively
+asks the children to paint themselves with the shared painter.
+With certain widget hierarchies it turns out that the topmost window
+may be asked to paint itself deep inside the recursive painting stack:
+a sort of "hierarchy-looping recursion".
+The window will do the job and then happily destroy the shared
+painter leaving the outer stack frames with a dangling pointer.
+
+This patch stops the "looping recursion" when it's triggered
+with a shared painter already active. The bug doesn't seem to
+be present in qt 4.5 snapshots, but in the meantime we need this fix.
+
+
+Index: src/gui/painting/qbackingstore.cpp
+===================================================================
+--- src/gui/painting/qbackingstore.cpp (revision 879741)
++++ src/gui/painting/qbackingstore.cpp (working copy)
+@@ -987,8 +987,12 @@
+ return;
+ }
+
+- if (tlw->updatesEnabled()) {
++ // With certain widget hierarchies we may end up being called recursively
++ // on the same toplevel. This is likely to explode once the painter is released
++ // in the code below (since there is no reference counting). Avoid it.
++ bool alreadyPainting = tlwExtra->sharedPainter && tlwExtra->sharedPainter->isActive();
+
++ if (tlw->updatesEnabled() && !alreadyPainting) {
+ // hw: XXX the toClean region is not correct if !dirtyWidgets.isEmpty()
+
+ // Pre render config