From ebabc887b157ba93c3cf1b537bc32c81e38bbbc3 Mon Sep 17 00:00:00 2001 From: markd Date: Wed, 11 Feb 2009 07:46:15 +0000 Subject: Add patch from qt-copy. Fixes random crashes seen in kde4's kmail. Bump PKGREVISION. --- x11/qt4-libs/Makefile | 4 ++-- x11/qt4-libs/distinfo | 3 ++- x11/qt4-libs/patches/patch-au | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 x11/qt4-libs/patches/patch-au (limited to 'x11/qt4-libs') 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 + +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 -- cgit v1.2.3