This commit is contained in:
Jaroslav Reznik 2011-05-27 14:57:55 +02:00
parent 6fba052a9f
commit 8a72ede39a
9 changed files with 45 additions and 190 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
/kdelibs-4.6.2.tar.bz2
/kdelibs-4.6.3.tar.bz2
/kdelibs-4.6.80.tar.bz2

View File

@ -1,12 +0,0 @@
diff -up kdelibs-4.5.80/kio/kio/kprotocolmanager.cpp.branding kdelibs-4.5.80/kio/kio/kprotocolmanager.cpp
--- kdelibs-4.5.80/kio/kio/kprotocolmanager.cpp.branding 2010-11-05 05:48:26.000000000 -0500
+++ kdelibs-4.5.80/kio/kio/kprotocolmanager.cpp 2010-11-20 10:42:54.223363491 -0600
@@ -87,7 +87,7 @@ QL1S("Mozilla/5.0 (compatible; Konqueror
QString::number(KDE::versionMajor()) % QL1C('.') % QString::number(KDE::versionMinor()) % \
X % QL1S(") KHTML/") % \
QString::number(KDE::versionMajor()) % QL1C('.') % QString::number(KDE::versionMinor()) % \
-QL1C('.') % QString::number(KDE::versionRelease()) % QL1S(" (like Gecko)")
+QL1C('.') % QString::number(KDE::versionRelease()) % QL1S(" (like Gecko) Fedora/@@VERSION_RELEASE@@")
#define PRIVATE_DATA \
KProtocolManagerPrivate *d = kProtocolManagerPrivate

View File

@ -1,114 +0,0 @@
commit a8d16682c31ef523ffebba6e19283a19cd5f5627
Author: Aaron Seigo <aseigo@kde.org>
Date: Fri May 6 15:19:09 2011 +0200
use a QWeakPointer on the KIconLoader passed in as there are no lifetime guarantees
usually KGlobal::iconLoader() is used, so this isn't an issue seen very often.
however, when a local KIconLoader is created, it is easy to get QIcons with a
KIconEngine that has a bad KIconLoader pointer in them. particularly as QIcon
is implicitly shared and easily passed around. the StatusNotifier Plasma DataEngine
was triggering this, though it would be trivial to run into this problem again
anytime a KIconLoader is created locally
thankfully, QWeakPointer does the job and is very fast and light. (confirmed
both with my own testing and confirmation from Thiago).
massive thanks to Michael Pyne for detecting the cause of the problem via Valgrind.
BUG:258706
diff --git a/kdeui/icons/kiconengine.cpp b/kdeui/icons/kiconengine.cpp
index 087ba1b..73e092c 100644
--- a/kdeui/icons/kiconengine.cpp
+++ b/kdeui/icons/kiconengine.cpp
@@ -27,16 +27,16 @@
KIconEngine::KIconEngine(const QString& iconName, KIconLoader* iconLoader, const QStringList& overlays)
+ : mIconName(iconName),
+ mIconLoader(iconLoader),
+ mOverlays(overlays)
{
- mIconName = iconName;
- mIconLoader = iconLoader;
- mOverlays = overlays;
}
KIconEngine::KIconEngine(const QString& iconName, KIconLoader* iconLoader)
+ : mIconName(iconName),
+ mIconLoader(iconLoader)
{
- mIconName = iconName;
- mIconLoader = iconLoader;
}
static inline int qIconModeToKIconState( QIcon::Mode mode )
@@ -65,8 +65,12 @@ QSize KIconEngine::actualSize( const QSize & size, QIcon::Mode mode, QIcon::Stat
return QSize(iconSize, iconSize);
}
-void KIconEngine::paint( QPainter * painter, const QRect & rect, QIcon::Mode mode, QIcon::State state )
+void KIconEngine::paint(QPainter * painter, const QRect & rect, QIcon::Mode mode, QIcon::State state)
{
+ if (!mIconLoader) {
+ return;
+ }
+
Q_UNUSED(state)
const int kstate = qIconModeToKIconState(mode);
@@ -80,20 +84,27 @@ void KIconEngine::paint( QPainter * painter, const QRect & rect, QIcon::Mode mod
}
const int iconSize = qMin(rect.width(), rect.height());
- const QPixmap pix = mIconLoader->loadIcon(mIconName, group, iconSize, kstate, mOverlays);
+ const QPixmap pix = mIconLoader.data()->loadIcon(mIconName, group, iconSize, kstate, mOverlays);
painter->drawPixmap(rect, pix);
}
-QPixmap KIconEngine::pixmap( const QSize & size, QIcon::Mode mode, QIcon::State state )
+QPixmap KIconEngine::pixmap(const QSize & size, QIcon::Mode mode, QIcon::State state)
{
Q_UNUSED(state)
+ if (!mIconLoader) {
+ QPixmap pm(size);
+ pm.fill(Qt::transparent);
+ return pm;
+ }
+
const int kstate = qIconModeToKIconState(mode);
const int iconSize = qMin(size.width(), size.height());
- QPixmap pix = mIconLoader->loadIcon(mIconName, KIconLoader::Desktop, iconSize, kstate, mOverlays);
+ QPixmap pix = mIconLoader.data()->loadIcon(mIconName, KIconLoader::Desktop, iconSize, kstate, mOverlays);
- if(pix.size() == size)
+ if (pix.size() == size) {
return pix;
+ }
QPixmap pix2(size);
pix2.fill(QColor(0,0,0,0));
@@ -111,7 +122,7 @@ QString KIconEngine::key() const
QIconEngineV2 *KIconEngine::clone() const
{
- return new KIconEngine(mIconName, mIconLoader, mOverlays);
+ return new KIconEngine(mIconName, mIconLoader.data(), mOverlays);
}
bool KIconEngine::read(QDataStream &in)
diff --git a/kdeui/icons/kiconengine_p.h b/kdeui/icons/kiconengine_p.h
index 8095d2a..9fba63c 100644
--- a/kdeui/icons/kiconengine_p.h
+++ b/kdeui/icons/kiconengine_p.h
@@ -75,7 +75,7 @@ class KIconEngine : public QIconEngineV2
private:
QString mIconName;
QStringList mOverlays;
- KIconLoader* mIconLoader;
+ QWeakPointer<KIconLoader> mIconLoader;
};
inline KIconEngine::~KIconEngine()

View File

@ -1,27 +0,0 @@
commit 92db24adfa941003db1d885df01157056617f30b
Author: Maks Orlovich <maksim@kde.org>
Date: Sun May 8 14:39:03 2011 -0400
Fix the job-on-hold reuse logic, which caused the double-POST problem)
adawit, could you please at least READ what you're backporting if you are
going to be this aggressive? Or better yet, please don't backport anything
that's not fixing a critical bug or is trivial, as per:
http://techbase.kde.org/Policies/Minor_Point_Release_Policy
CCMAIL: adawit@kde.org
BUG: 272466
diff --git a/kio/kio/scheduler.cpp b/kio/kio/scheduler.cpp
index 55da053..9f5607e 100644
--- a/kio/kio/scheduler.cpp
+++ b/kio/kio/scheduler.cpp
@@ -1151,7 +1151,7 @@ Slave *SchedulerPrivate::heldSlaveForJob(SimpleJob *job)
bool canJobReuse = (cmd == CMD_GET || cmd == CMD_MULTI_GET);
if (KIO::TransferJob *tJob = qobject_cast<KIO::TransferJob *>(job)) {
- canJobReuse = cmd == (canJobReuse || cmd == CMD_SPECIAL);
+ canJobReuse = (canJobReuse || cmd == CMD_SPECIAL);
if (canJobReuse) {
KIO::MetaData outgoing = tJob->outgoingMetaData();
const QString resume = outgoing.value("resume");

View File

@ -0,0 +1,11 @@
diff -up kdelibs-4.6.80/kio/kio/kprotocolmanager.cpp.branding kdelibs-4.6.80/kio/kio/kprotocolmanager.cpp
--- kdelibs-4.6.80/kio/kio/kprotocolmanager.cpp.branding 2011-05-20 22:24:54.000000000 +0200
+++ kdelibs-4.6.80/kio/kio/kprotocolmanager.cpp 2011-05-27 14:18:43.999356195 +0200
@@ -645,6 +645,7 @@ QString KProtocolManager::defaultUserAge
d->useragent += QString::number(KDE::versionMajor());
d->useragent += QL1C('.');
d->useragent += QString::number(KDE::versionMinor());
+ d->useragent += QL1C(" Fedora/@@VERSION_RELEASE@@");
}
else
{

View File

@ -1,8 +1,7 @@
Index: solid/solid/CMakeLists.txt
===================================================================
--- solid/solid/CMakeLists.txt (revision 1211253)
+++ solid/solid/CMakeLists.txt (working copy)
@@ -39,7 +39,6 @@
diff -up kdelibs-4.6.80/solid/solid/CMakeLists.txt.halectomy kdelibs-4.6.80/solid/solid/CMakeLists.txt
--- kdelibs-4.6.80/solid/solid/CMakeLists.txt.halectomy 2011-05-20 22:24:54.000000000 +0200
+++ kdelibs-4.6.80/solid/solid/CMakeLists.txt 2011-05-27 14:46:20.350312427 +0200
@@ -39,7 +39,6 @@ configure_file(config-processor.h.cmake
file(MAKE_DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}/backends/fakehw
@ -10,7 +9,7 @@ Index: solid/solid/CMakeLists.txt
${CMAKE_CURRENT_BINARY_DIR}/backends/udev
${CMAKE_CURRENT_BINARY_DIR}/backends/wmi
)
@@ -195,33 +194,6 @@
@@ -199,33 +198,6 @@ if(NOT WIN32 AND NOT APPLE)
endif( UDEV_FOUND )
@ -44,7 +43,7 @@ Index: solid/solid/CMakeLists.txt
message(STATUS "Building Solid UPower backend." )
set(solid_LIB_SRCS ${solid_LIB_SRCS}
backends/upower/upowermanager.cpp
@@ -249,15 +221,6 @@
@@ -253,16 +225,6 @@ if(NOT WIN32 AND NOT APPLE)
)
endif (CMAKE_SYSTEM_NAME MATCHES Linux)
@ -52,6 +51,7 @@ Index: solid/solid/CMakeLists.txt
- set(solid_LIB_SRCS ${solid_LIB_SRCS}
- backends/fstab/fstabmanager.cpp
- backends/fstab/fstabdevice.cpp
- backends/fstab/fstabnetworkshare.cpp
- backends/fstab/fstabstorageaccess.cpp
- backends/fstab/fstabhandling.cpp
- backends/fstab/fstabwatcher.cpp
@ -60,10 +60,9 @@ Index: solid/solid/CMakeLists.txt
endif(NOT WIN32 AND NOT APPLE)
if(APPLE)
Index: solid/solid/managerbase.cpp
===================================================================
--- solid/solid/managerbase.cpp (revision 1211253)
+++ solid/solid/managerbase.cpp (working copy)
diff -up kdelibs-4.6.80/solid/solid/managerbase.cpp.halectomy kdelibs-4.6.80/solid/solid/managerbase.cpp
--- kdelibs-4.6.80/solid/solid/managerbase.cpp.halectomy 2011-05-20 22:24:54.000000000 +0200
+++ kdelibs-4.6.80/solid/solid/managerbase.cpp 2011-05-27 14:43:22.367821121 +0200
@@ -30,7 +30,6 @@
#if defined (Q_OS_MAC)
#include "backends/iokit/iokitmanager.h"
@ -81,7 +80,7 @@ Index: solid/solid/managerbase.cpp
#elif defined (Q_WS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE)
#include "backends/wmi/wmimanager.h"
#endif
@@ -71,22 +68,12 @@
@@ -71,22 +68,12 @@ void Solid::ManagerBasePrivate::loadBack
# elif defined(Q_WS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE)
m_backends << new Solid::Backends::Wmi::WmiManager(0);

View File

@ -1,18 +1,18 @@
diff -up kdelibs-4.5.80/kdecore/kernel/kstandarddirs.cpp.kstandarddirs kdelibs-4.5.80/kdecore/kernel/kstandarddirs.cpp
--- kdelibs-4.5.80/kdecore/kernel/kstandarddirs.cpp.kstandarddirs 2010-11-20 16:04:10.456373049 -0600
+++ kdelibs-4.5.80/kdecore/kernel/kstandarddirs.cpp 2010-11-20 16:05:09.356363480 -0600
@@ -1125,7 +1125,9 @@ QStringList KStandardDirs::KStandardDirs
diff -up kdelibs-4.6.80/kdecore/kernel/kstandarddirs.cpp.kstandarddirs kdelibs-4.6.80/kdecore/kernel/kstandarddirs.cpp
--- kdelibs-4.6.80/kdecore/kernel/kstandarddirs.cpp.kstandarddirs 2011-05-20 22:24:54.000000000 +0200
+++ kdelibs-4.6.80/kdecore/kernel/kstandarddirs.cpp 2011-05-27 14:33:01.445487773 +0200
@@ -1152,7 +1152,9 @@ QStringList KStandardDirs::KStandardDirs
pit != prefixList->end();
++pit)
{
- if((*pit)!=installprefix||installdir.isEmpty())
+ // "exe" never has a custom install path, and the check triggers
+ // a false positive due to the libexecdir patch
+ if((*pit)!=installprefix||installdir.isEmpty()||!strcmp("exe", type))
{
- if((*pit)!=installprefix||installdir.isEmpty())
+ // "exe" never has a custom install path, and the check triggers
+ // a false positive due to the libexecdir patch
+ if((*pit)!=installprefix||installdir.isEmpty()||!strcmp("exe", type))
{
for (QStringList::ConstIterator it = dirs.constBegin();
it != dirs.constEnd(); ++it)
@@ -1143,6 +1145,11 @@ QStringList KStandardDirs::KStandardDirs
@@ -1170,6 +1172,11 @@ QStringList KStandardDirs::KStandardDirs
if ((local || testdir.exists()) && !candidates.contains(path))
candidates.append(path);
}
@ -20,7 +20,7 @@ diff -up kdelibs-4.5.80/kdecore/kernel/kstandarddirs.cpp.kstandarddirs kdelibs-4
+ // hack) - we want /etc/kde after the local config paths
+ // and before the ones in /usr (including kde-profile)
+ if (local && !strcmp("config", type))
+ candidates.append(QLatin1String("/etc/kde/"));
+ candidates.append(QLatin1String("/etc/kde/"));
local = false;
}
else
else

View File

@ -15,8 +15,8 @@
%endif
Summary: KDE Libraries
Version: 4.6.3
Release: 5%{?dist}
Version: 4.6.80
Release: 1%{?dist}
Name: kdelibs
Epoch: 6
@ -65,7 +65,7 @@ Patch2: kdelibs-4.2.85-kde149705.patch
# kdepimlibs-apidocs against
Patch8: kdelibs-4.3.90-install_all_css.patch
# add Fedora/V-R to KHTML UA string
Patch9: kdelibs-4.5.80-branding.patch
Patch9: kdelibs-4.6.80-branding.patch
# don't cache kdeglobals paths because they change after profile directories
# are loaded from kde4rc
Patch10: kdelibs-4.1.72-no-cache-kdeglobals-paths.patch
@ -75,7 +75,7 @@ Patch12: kdelibs-4.1.0-xdg-menu.patch
# patch KStandardDirs to use %{_libexecdir}/kde4 instead of %{_libdir}/kde4/libexec
Patch14: kdelibs-4.5.80-libexecdir.patch
# kstandarddirs changes: search /etc/kde, find %{_kde4_libexecdir}
Patch18: kdelibs-4.5.80-kstandarddirs.patch
Patch18: kdelibs-4.6.80-kstandarddirs.patch
# COMMENT ME PLEASE
Patch20: kdelibs-4.1.70-cmake.patch
# disable drkonqi by default, RHEL prefers/wants abrt
@ -96,10 +96,6 @@ Patch50: kdelibs-4.5.1-knewstuff_gpg2.patch
Patch51: kdelibs-4.6.2-uri_mimetypes.patch
## upstream
# https://projects.kde.org/projects/kde/kdelibs/repository/revisions/a8d16682c31ef523ffebba6e19283a19cd5f5627/diff
Patch100: kdelibs-4.6.3-kde258706.patch
# https://projects.kde.org/projects/kde/kdelibs/repository/revisions/92db24adfa941003db1d885df01157056617f30b/diff
Patch101: kdelibs-4.6.3-kio-double-requests-kde#272466.patch
## security fix
# Not Upstreamed? why not ? -- Rex
@ -107,7 +103,7 @@ Patch200: kdelibs-4.3.1-CVE-2009-2702.patch
## Fedora specific patches
# make forcefully hal-free build
Patch300: kdelibs-4.5.90-halectomy.patch
Patch300: kdelibs-4.6.80-halectomy.patch
%if 0%{?fedora} && 0%{?fedora} < 13
@ -286,15 +282,13 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
%patch51 -p1 -b .uri_mimetypes
# upstream patches
%patch100 -p1 -b .kde258706
%patch101 -p1 -b .kde272466
# security fix
%patch200 -p1 -b .CVE-2009-2702
# Fedora patches
%if 0%{?halectomy}
%patch300 -p0 -b .halectomy
%patch300 -p1 -b .halectomy
%endif
@ -543,6 +537,9 @@ rm -rf %{buildroot}
%changelog
* Fri May 27 2011 Jaroslav Reznik <jreznik@redhat.com> 4.6.80-1
- 4.6.80 (beta1)
* Tue May 24 2011 Kevin Kofler <Kevin@tigcc.ticalc.org> 4.6.3-5
- fix kio regression causing requests submitted twice (#707146, kde#272466)

View File

@ -1 +1 @@
923a7e8f89aa504647e14472b24b8c0a kdelibs-4.6.3.tar.bz2
b998dea244b310759712241b319aa000 kdelibs-4.6.80.tar.bz2