Wed Feb 11 07:46:15 2009 UTC ()
Add patch from qt-copy. Fixes random crashes seen in kde4's kmail.
Bump PKGREVISION.


(markd)
diff -r1.26 -r1.27 pkgsrc/x11/qt4-libs/Makefile
diff -r1.25 -r1.26 pkgsrc/x11/qt4-libs/distinfo
diff -r0 -r1.1 pkgsrc/x11/qt4-libs/patches/patch-au

cvs diff -r1.26 -r1.27 pkgsrc/x11/qt4-libs/Makefile (expand / switch to unified diff)

--- pkgsrc/x11/qt4-libs/Makefile 2008/12/17 10:43:06 1.26
+++ pkgsrc/x11/qt4-libs/Makefile 2009/02/11 07:46:15 1.27
@@ -1,21 +1,21 @@ @@ -1,21 +1,21 @@
1# $NetBSD: Makefile,v 1.26 2008/12/17 10:43:06 wiz Exp $ 1# $NetBSD: Makefile,v 1.27 2009/02/11 07:46:15 markd Exp $
2 2
3PKG_DESTDIR_SUPPORT= user-destdir 3PKG_DESTDIR_SUPPORT= user-destdir
4 4
5.include "../../x11/qt4-libs/Makefile.common" 5.include "../../x11/qt4-libs/Makefile.common"
6 6
7PKGNAME= qt4-libs-${QTVERSION} 7PKGNAME= qt4-libs-${QTVERSION}
8PKGREVISION= 2 8PKGREVISION= 3
9COMMENT= C++ X GUI toolkit 9COMMENT= C++ X GUI toolkit
10 10
11BUILD_TARGET= sub-src 11BUILD_TARGET= sub-src
12INSTALL_TARGET= install_flat_headers install_targ_headers 12INSTALL_TARGET= install_flat_headers install_targ_headers
13 13
14PTHREAD_OPTS+= require 14PTHREAD_OPTS+= require
15UNLIMIT_RESOURCES= datasize 15UNLIMIT_RESOURCES= datasize
16BUILDLINK_PASSTHRU_DIRS+= ${QTPREFIX} 16BUILDLINK_PASSTHRU_DIRS+= ${QTPREFIX}
17 17
18PLIST_SRC= ${WRKDIR}/PLIST ${PKGDIR}/PLIST 18PLIST_SRC= ${WRKDIR}/PLIST ${PKGDIR}/PLIST
19 19
20# built as plugins 20# built as plugins
21CONFIGURE_ARGS+= -no-sql-sqlite 21CONFIGURE_ARGS+= -no-sql-sqlite

cvs diff -r1.25 -r1.26 pkgsrc/x11/qt4-libs/distinfo (expand / switch to unified diff)

--- pkgsrc/x11/qt4-libs/distinfo 2008/10/26 14:02:33 1.25
+++ pkgsrc/x11/qt4-libs/distinfo 2009/02/11 07:46:15 1.26
@@ -1,24 +1,25 @@ @@ -1,24 +1,25 @@
1$NetBSD: distinfo,v 1.25 2008/10/26 14:02:33 adam Exp $ 1$NetBSD: distinfo,v 1.26 2009/02/11 07:46:15 markd Exp $
2 2
3SHA1 (qt-x11-opensource-src-4.4.3.tar.bz2) = 099bcc2dfda73f093f7e80e9004114d41db40b51 3SHA1 (qt-x11-opensource-src-4.4.3.tar.bz2) = 099bcc2dfda73f093f7e80e9004114d41db40b51
4RMD160 (qt-x11-opensource-src-4.4.3.tar.bz2) = 3c73d9c549523efa0e760965c38c7876b4636861 4RMD160 (qt-x11-opensource-src-4.4.3.tar.bz2) = 3c73d9c549523efa0e760965c38c7876b4636861
5Size (qt-x11-opensource-src-4.4.3.tar.bz2) = 103961247 bytes 5Size (qt-x11-opensource-src-4.4.3.tar.bz2) = 103961247 bytes
6SHA1 (patch-aa) = 7f2bd5a4052e931b1562d02eaa6a9c2966567e37 6SHA1 (patch-aa) = 7f2bd5a4052e931b1562d02eaa6a9c2966567e37
7SHA1 (patch-ab) = 0575619a679ec81a17ede2a39cdaccb938b16fcd 7SHA1 (patch-ab) = 0575619a679ec81a17ede2a39cdaccb938b16fcd
8SHA1 (patch-ac) = baab52ce87e4dcf11ae76b56851e92f58455d94b 8SHA1 (patch-ac) = baab52ce87e4dcf11ae76b56851e92f58455d94b
9SHA1 (patch-ad) = bfa4b61e32b26dac23a33ab29ce68eb62d6f5fb5 9SHA1 (patch-ad) = bfa4b61e32b26dac23a33ab29ce68eb62d6f5fb5
10SHA1 (patch-ae) = a23a2cc4271b5613f59ab5550e9aeccca15573a9 10SHA1 (patch-ae) = a23a2cc4271b5613f59ab5550e9aeccca15573a9
11SHA1 (patch-af) = b43a2e4b92435f9b7a7e5b46821e2943c343a7f4 11SHA1 (patch-af) = b43a2e4b92435f9b7a7e5b46821e2943c343a7f4
12SHA1 (patch-ag) = 0ae6efe5f9283a567bd069779ba36b77fa61006e 12SHA1 (patch-ag) = 0ae6efe5f9283a567bd069779ba36b77fa61006e
13SHA1 (patch-ah) = 62c50fe48b9ff1ce9fb757b432c8b1db7693e112 13SHA1 (patch-ah) = 62c50fe48b9ff1ce9fb757b432c8b1db7693e112
14SHA1 (patch-ai) = b15936b85b2b1946e8c9a92bf393c3d3a1fc6950 14SHA1 (patch-ai) = b15936b85b2b1946e8c9a92bf393c3d3a1fc6950
15SHA1 (patch-aj) = 9d3bbda1523ef1ca3ad25646d6c0457a30c3e203 15SHA1 (patch-aj) = 9d3bbda1523ef1ca3ad25646d6c0457a30c3e203
16SHA1 (patch-ak) = 9aaf62149ec555f990e2216710ba5b88d532224a 16SHA1 (patch-ak) = 9aaf62149ec555f990e2216710ba5b88d532224a
17SHA1 (patch-al) = ae85006d95f8a55521219442cc642dfa4377671c 17SHA1 (patch-al) = ae85006d95f8a55521219442cc642dfa4377671c
18SHA1 (patch-am) = 0d4a4f2767cad5414c8bfe4dc8485064a9be4381 18SHA1 (patch-am) = 0d4a4f2767cad5414c8bfe4dc8485064a9be4381
19SHA1 (patch-ao) = e74125f5230db3e1b339c76c06a54470dd0631db 19SHA1 (patch-ao) = e74125f5230db3e1b339c76c06a54470dd0631db
20SHA1 (patch-ap) = 99402ac9ef527e7fa9b1825c8e1b8a299bc4ffe7 20SHA1 (patch-ap) = 99402ac9ef527e7fa9b1825c8e1b8a299bc4ffe7
21SHA1 (patch-aq) = 401bf595bfe3854e36b0260d24be95b712f9d6a2 21SHA1 (patch-aq) = 401bf595bfe3854e36b0260d24be95b712f9d6a2
22SHA1 (patch-ar) = 5bc9a1d384c9a888f1295b87968a09236b48af65 22SHA1 (patch-ar) = 5bc9a1d384c9a888f1295b87968a09236b48af65
23SHA1 (patch-as) = 244a3017e2780270b61ac50af000cd6fd1bb9cf5 23SHA1 (patch-as) = 244a3017e2780270b61ac50af000cd6fd1bb9cf5
24SHA1 (patch-at) = c8c818dcf45822c8510568bc738b819493f38b11 24SHA1 (patch-at) = c8c818dcf45822c8510568bc738b819493f38b11
 25SHA1 (patch-au) = 0d816fc2c359cf8fdea039b9307faf8e4651f608

File Added: pkgsrc/x11/qt4-libs/patches/patch-au
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