diff options
author | markd <markd> | 2009-02-11 07:46:15 +0000 |
---|---|---|
committer | markd <markd> | 2009-02-11 07:46:15 +0000 |
commit | ebabc887b157ba93c3cf1b537bc32c81e38bbbc3 (patch) | |
tree | 7ebdea19337dab8337e962714726f1cbc253026b /x11 | |
parent | b17a0de5fd0619abd224c8f1c5626cfd82dd6b3e (diff) | |
download | pkgsrc-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/Makefile | 4 | ||||
-rw-r--r-- | x11/qt4-libs/distinfo | 3 | ||||
-rw-r--r-- | x11/qt4-libs/patches/patch-au | 40 |
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 |