Hello community, here is the log from the commit of package libqt4 for openSUSE:Factory checked in at 2013-01-20 12:17:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqt4 (Old) and /work/SRC/openSUSE:Factory/.libqt4.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt4", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/libqt4/libqt4-devel-doc.changes 2013-01-10 15:25:35.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libqt4.new/libqt4-devel-doc.changes 2013-01-20 12:17:42.000000000 +0100 @@ -1,0 +2,7 @@ +Fri Jan 18 18:23:22 UTC 2013 - [email protected] + +- Added garbage-collect-deleted-objects.patch from upstream, + Fixes performance issues in apps which register + and deregister objects very frequently (like nepomukstorage) + +------------------------------------------------------------------- libqt4-sql-plugins.changes: same change libqt4.changes: same change New: ---- garbage-collect-deleted-objects.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqt4-devel-doc.spec ++++++ --- /var/tmp/diff_new_pack.8YMEBn/_old 2013-01-20 12:17:50.000000000 +0100 +++ /var/tmp/diff_new_pack.8YMEBn/_new 2013-01-20 12:17:50.000000000 +0100 @@ -102,6 +102,9 @@ Patch143: openssl-incompatibility-fix.diff Patch144: cert-blacklist-tuerktrust.diff Patch145: cert-blacklist-more.diff +# PATCH-FIX-UPSTREAM garbage-collect-deleted-objects.patch Fixes performance issues in apps which register +# and deregister objects very frequently (like nepomukstorage) +Patch146: garbage-collect-deleted-objects.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %define common_options --opensource -fast -no-separate-debug-info -shared -xkb -openssl-linked -xrender -xcursor -dbus-linked -xfixes -xrandr -xinerama -sm -no-nas-sound -no-rpath -system-libjpeg -system-libpng -accessibility -cups -stl -nis -system-zlib -prefix /usr -L %{_libdir} -libdir %{_libdir} -docdir %_docdir/%{base_name} -examplesdir %{_libdir}/qt4/examples -demosdir %{_libdir}/qt4/demos -plugindir %plugindir -translationdir %{_datadir}/qt4/translations -iconv -sysconfdir /etc/settings -datadir %{_datadir}/qt4/ -no-pch -reduce-relocations -exceptions -system-libtiff -glib -optimized-qmake -no-webkit -no-xmlpatterns -system-sqlite -qt3support -no-sql-mysql -importdir %plugindir/imports -xsync -xinput -gtkstyle @@ -181,6 +184,7 @@ %patch143 %patch144 -p1 %patch145 -p1 +%patch146 -p1 # ### 47 rediff #%patch121 -p1 # be sure not to use them libqt4-sql-plugins.spec: same change libqt4.spec: same change ++++++ garbage-collect-deleted-objects.patch ++++++ From: David Faure <[email protected]> Date: Tue, 15 Jan 2013 17:41:27 +0000 Subject: QtDBus: Garbage collect deleted objects now and then. X-Git-Url: http://quickgit.kde.org/?p=qt.git&a=commitdiff&h=cf5442551196c3e7e06e6de85c5f8a198b0ff001 --- QtDBus: Garbage collect deleted objects now and then. Fixes performance issues in apps which register and deregister objects very frequently (like nepomukstorage). Change-Id: Id7d6ef508336758c55fa894868241f143b3e30e0 Backport-Of: ac9ab9703ff299c94dca7585d5a12ecde28931bb Reviewed-by: Thiago Macieira <[email protected]> --- --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -2216,6 +2216,19 @@ return signalHooks.erase(it); } + +static void cleanupDeletedNodes(QDBusConnectionPrivate::ObjectTreeNode &parent) +{ + QMutableVectorIterator<QDBusConnectionPrivate::ObjectTreeNode> it(parent.children); + while (it.hasNext()) { + QDBusConnectionPrivate::ObjectTreeNode& node = it.next(); + if (node.obj == 0 && node.children.isEmpty()) + it.remove(); + else + cleanupDeletedNodes(node); + } +} + void QDBusConnectionPrivate::registerObject(const ObjectTreeNode *node) { connect(node->obj, SIGNAL(destroyed(QObject*)), SLOT(objectDestroyed(QObject*)), @@ -2239,6 +2252,10 @@ this, SLOT(relaySignal(QObject*,const QMetaObject*,int,QVariantList)), Qt::DirectConnection); } + + static int counter = 0; + if ((++counter % 20) == 0) + cleanupDeletedNodes(rootNode); } void QDBusConnectionPrivate::connectRelay(const QString &service, -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
