--- /dev/null
+From 339e220e29ff39b86705438b4be6f90e5618d27b Mon Sep 17 00:00:00 2001
+From: Lubos Lunak <l.lunak@kde.org>
+Date: Tue, 2 Oct 2007 16:08:32 +0200
+Subject: [PATCH 02/13] This patch makes override-redirect windows (popup menu, dropdown menu,
+ tooltip, combobox, etc.) also have more window properties like WM_CLASS,
+ so they can be used when compositing.
+
+qt-bugs@ issue : none
+bugs.kde.org number : none
+---
+ src/gui/kernel/qwidget_x11.cpp | 21 +++++++++++++++------
+ 1 files changed, 15 insertions(+), 6 deletions(-)
+
+diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
+index 79ee8c9..a74a849 100644
+--- a/src/gui/kernel/qwidget_x11.cpp
++++ b/src/gui/kernel/qwidget_x11.cpp
+@@ -719,6 +719,11 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
+ Q_ASSERT(id);
+ XChangeWindowAttributes(dpy, id, CWOverrideRedirect | CWSaveUnder,
+ &wsa);
++ XClassHint class_hint;
++ QByteArray appName = qAppName().toLatin1();
++ class_hint.res_name = appName.data(); // application name
++ class_hint.res_class = const_cast<char *>(QX11Info::appClass()); // application class
++ XSetWMProperties(dpy, id, 0, 0, 0, 0, 0, 0, &class_hint);
+ } else if (topLevel && !desktop) { // top-level widget
+ if (!X11->wm_client_leader)
+ create_wm_client_leader();
+@@ -769,13 +774,21 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
+ // set EWMH window types
+ setNetWmWindowTypes();
+
++ // when we create a toplevel widget, the frame strut should be dirty
++ data.fstrut_dirty = 1;
++
++ } else {
++ // non-toplevel widgets don't have a frame, so no need to
++ // update the strut
++ data.fstrut_dirty = 0;
++ }
++
++ if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows
+ // set _NET_WM_PID
+ long curr_pid = getpid();
+ XChangeProperty(dpy, id, ATOM(_NET_WM_PID), XA_CARDINAL, 32, PropModeReplace,
+ (unsigned char *) &curr_pid, 1);
+
+- // when we create a toplevel widget, the frame strut should be dirty
+- data.fstrut_dirty = 1;
+
+ // declare the widget's window role
+ if (QTLWExtra *topData = maybeTopData()) {
+@@ -791,10 +804,6 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
+ XChangeProperty(dpy, id, ATOM(WM_CLIENT_LEADER),
+ XA_WINDOW, 32, PropModeReplace,
+ (unsigned char *)&X11->wm_client_leader, 1);
+- } else {
+- // non-toplevel widgets don't have a frame, so no need to
+- // update the strut
+- data.fstrut_dirty = 0;
+ }
+
+ if (initializeWindow && q->internalWinId()) {
+--
+1.6.5.1
+
--- /dev/null
+From 86fc0d43cdcf3232ae0e4e6f4f28cf8f1a45ede5 Mon Sep 17 00:00:00 2001
+From: Benjamin Reed <rangerrick@befunk.com>
+Date: Tue, 19 Feb 2008 17:37:37 +0100
+Subject: [PATCH 04/13] This patch adds support for using -isystem to allow putting an include
+ directory at the end of the compiler's header search path.
+
+I don't have the exact output anymore (I've since patched Qt's configure) but
+essentially, since I have pcre.h in /opt/kde4-deps/include, it was
+conflicting with Qt's (modified) pcre.h in the WebKit bits, since
+-I /opt/kde4-deps/include ends up in CXXFLAGS in the generated makefiles, it
+comes *before* the specific locations in INCPATH on the compile line, and you
+end up with a conflict with the system-installed pcre.h.
+
+Presumably, if your pcre.h is in /usr/include as on most Linux systems, you
+wouldn't notice this issue since /usr/include's already in your include path
+and people likely don't pass -I /usr/include to configure. I suspect that on
+any platform with a regular, system-installed pcre.h (or clucene headers),
+adding -I /usr/include would exhibit this bug, just as a custom-installed
+pcre/clucene in another root would.
+
+qt-bugs@ issue : 199610
+Trolltech task ID :
+bugs.kde.org number :
+---
+ configure | 8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/configure b/configure
+index 2c108ad..610a201 100755
+--- a/configure
++++ b/configure
+@@ -927,6 +927,11 @@ while [ "$#" -gt 0 ]; do
+ VAL=`echo $1 | sed 's,-D,,'`
+ fi
+ ;;
++ -isystem)
++ VAR="add_isystempath"
++ shift
++ VAL="$1"
++ ;;
+ -I?*|-I)
+ VAR="add_ipath"
+ if [ "$1" = "-I" ]; then
+@@ -1890,6 +1895,9 @@ while [ "$#" -gt 0 ]; do
+ add_ipath)
+ I_FLAGS="$I_FLAGS -I\"${VAL}\""
+ ;;
++ add_isystempath)
++ I_FLAGS="$I_FLAGS -isystem \"${VAL}\""
++ ;;
+ add_lpath)
+ L_FLAGS="$L_FLAGS -L\"${VAL}\""
+ ;;
+--
+1.6.5.1
+
--- /dev/null
+From 733d1afd03908d695aa8a6518f453b9ff0e5b8a2 Mon Sep 17 00:00:00 2001
+From: Robert Knight <robertknight@gmail.com>
+Date: Sun, 20 Apr 2008 16:28:31 +0200
+Subject: [PATCH 05/13] When tabs are inserted or removed in a QTabBar,
+ QTabBarPrivate::refresh() is called to update the layout. If the
+ tabbar widget is hidden, this just sets a boolean variable
+ (layoutDirty) and returns, so the parent widget's layout is not
+ notified about the possible geometry change.
+
+Prior to Qt 4.4 this was not a problem because the geometry was
+recalculated in QTabBar::sizeHint() if the layoutDirty variable was
+set. In Qt 4.4 however the layout caches size hint information in
+QWidgetItemV2. Since the cache information is not invalidated, the
+layout may end up using out-of-date size hint information to compute
+the widget size.
+
+If the QTabBar is empty when QTabBar::sizeHint() is called, it will
+return a size with a height of 0, which will be kept in the cache and
+so the tab bar will never be shown.
+
+This patch fixes the problem by calling updateGeometry() whenever the
+tab bar's layout is refreshed.
+
+qt-bugs@ issue : 208185
+Trolltech task ID : 208349
+bugs.kde.org number : 159014
+---
+ src/gui/widgets/qtabbar.cpp | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
+index 419d456..41107a0 100644
+--- a/src/gui/widgets/qtabbar.cpp
++++ b/src/gui/widgets/qtabbar.cpp
+@@ -678,8 +678,8 @@ void QTabBarPrivate::refresh()
+ layoutTabs();
+ makeVisible(currentIndex);
+ q->update();
+- q->updateGeometry();
+ }
++ q->updateGeometry();
+ }
+
+ /*!
+--
+1.6.5.1
+
--- /dev/null
+From 9eb3560cfd5cd0bc9c7bf79f2c27657ee07b8f95 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Sat, 8 Aug 2009 14:40:25 +0200
+Subject: [PATCH 12/13] Add context to tr calls in QShortcut
+
+Some languages have special rules for using "+" to concatenate strings and
+for example it needs to be Ctrl + Shift instead of Ctrl+Shift, adding
+context to these strings helps creating a more correct translation
+---
+ src/gui/kernel/qkeysequence.cpp | 20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
+index 894f663..c17f253 100644
+--- a/src/gui/kernel/qkeysequence.cpp
++++ b/src/gui/kernel/qkeysequence.cpp
+@@ -991,10 +991,10 @@ int QKeySequencePrivate::decodeString(const QString &str, QKeySequence::Sequence
+
+ QList<QModifKeyName> modifs;
+ if (nativeText) {
+- modifs << QModifKeyName(Qt::CTRL, QShortcut::tr("Ctrl").toLower().append(QLatin1Char('+')))
+- << QModifKeyName(Qt::SHIFT, QShortcut::tr("Shift").toLower().append(QLatin1Char('+')))
+- << QModifKeyName(Qt::ALT, QShortcut::tr("Alt").toLower().append(QLatin1Char('+')))
+- << QModifKeyName(Qt::META, QShortcut::tr("Meta").toLower().append(QLatin1Char('+')));
++ modifs << QModifKeyName(Qt::CTRL, QShortcut::tr("Ctrl", "Ctrl key, used for shortcuts").toLower().append(QLatin1Char('+')))
++ << QModifKeyName(Qt::SHIFT, QShortcut::tr("Shift", "Shift key, used for shortcuts").toLower().append(QLatin1Char('+')))
++ << QModifKeyName(Qt::ALT, QShortcut::tr("Alt", "Alt key, used for shortcuts").toLower().append(QLatin1Char('+')))
++ << QModifKeyName(Qt::META, QShortcut::tr("Meta", "Meta key, used for shortcuts").toLower().append(QLatin1Char('+')));
+ }
+ modifs += *gmodifs; // Test non-translated ones last
+
+@@ -1086,7 +1086,7 @@ QString QKeySequence::encodeString(int key)
+ static inline void addKey(QString &str, const QString &theKey, QKeySequence::SequenceFormat format)
+ {
+ if (!str.isEmpty())
+- str += (format == QKeySequence::NativeText) ? QShortcut::tr("+")
++ str += (format == QKeySequence::NativeText) ? QShortcut::tr("+", "Symbol used to concatenate keys in shortcuts")
+ : QString::fromLatin1("+");
+ str += theKey;
+ }
+@@ -1111,13 +1111,13 @@ QString QKeySequencePrivate::encodeString(int key, QKeySequence::SequenceFormat
+ {
+ // On other systems the order is Meta, Control, Alt, Shift
+ if ((key & Qt::META) == Qt::META)
+- s = nativeText ? QShortcut::tr("Meta") : QString::fromLatin1("Meta");
++ s = nativeText ? QShortcut::tr("Meta", "Meta key, used for shortcuts") : QString::fromLatin1("Meta");
+ if ((key & Qt::CTRL) == Qt::CTRL)
+- addKey(s, nativeText ? QShortcut::tr("Ctrl") : QString::fromLatin1("Ctrl"), format);
++ addKey(s, nativeText ? QShortcut::tr("Ctrl", "Ctrl key, used for shortcuts") : QString::fromLatin1("Ctrl"), format);
+ if ((key & Qt::ALT) == Qt::ALT)
+- addKey(s, nativeText ? QShortcut::tr("Alt") : QString::fromLatin1("Alt"), format);
++ addKey(s, nativeText ? QShortcut::tr("Alt", "Alt key, used for shortcuts") : QString::fromLatin1("Alt"), format);
+ if ((key & Qt::SHIFT) == Qt::SHIFT)
+- addKey(s, nativeText ? QShortcut::tr("Shift") : QString::fromLatin1("Shift"), format);
++ addKey(s, nativeText ? QShortcut::tr("Shift", "Shift key, used for shortcuts") : QString::fromLatin1("Shift"), format);
+ }
+
+
+@@ -1132,7 +1132,7 @@ QString QKeySequencePrivate::encodeString(int key, QKeySequence::SequenceFormat
+ p += QChar((key-0x10000)%400+0xdc00);
+ }
+ } else if (key >= Qt::Key_F1 && key <= Qt::Key_F35) {
+- p = nativeText ? QShortcut::tr("F%1").arg(key - Qt::Key_F1 + 1)
++ p = nativeText ? QShortcut::tr("F%1", "Fx key, used for shortcuts").arg(key - Qt::Key_F1 + 1)
+ : QString::fromLatin1("F%1").arg(key - Qt::Key_F1 + 1);
+ } else if (key) {
+ int i=0;
+--
+1.6.5.1
+
--- /dev/null
+Subproject commit 76078aea2e778defe516b39bd4367dedd4a71ca5
--- /dev/null
+diff -rup qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
+--- qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-02 07:33:13.000000000 +0530
++++ qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-04 13:27:33.000000000 +0530
+@@ -1741,6 +1741,11 @@ static int indic_nextSyllableBoundary(HB
+ if (state == Halant && uc[pos] == 0x200d /* ZWJ */)
+ break;
+ // the control character should be the last char in the item
++ if (state == Consonant && script == HB_Script_Bengali && uc[pos-1] == 0x09B0 && uc[pos] == 0x200d /* ZWJ */)
++ break;
++ if (state == Consonant && script == HB_Script_Kannada && uc[pos-1] == 0x0CB0 && uc[pos] == 0x200d /* ZWJ */)
++ break;
++ // Bengali and Kannada has a special exception for rendering yaphala with ra (to avoid reph) see http://www.unicode.org/faq/indic.html#15
+ ++pos;
+ goto finish;
+ case Consonant:
--- /dev/null
+diff -rup qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
+--- qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-30 07:23:12.000000000 +0530
++++ qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-22 14:33:33.000000000 +0530
+@@ -37,7 +37,7 @@ static HB_Bool isLetter(HB_UChar16 ucs)
+ FLAG(HB_Letter_Titlecase) |
+ FLAG(HB_Letter_Modifier) |
+ FLAG(HB_Letter_Other);
+- return FLAG(HB_GetUnicodeCharCategory(ucs)) & test;
++ return (FLAG(HB_GetUnicodeCharCategory(ucs)) & test) != 0;
+ }
+
+ static HB_Bool isMark(HB_UChar16 ucs)
--- /dev/null
+diff -rup qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
+--- qt-everywhere-opensource-src-4.6.3/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-02 07:33:13.000000000 +0530
++++ qt-everywhere-opensource-src-4.6.3_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-10 18:37:23.000000000 +0530
+@@ -1779,10 +1779,6 @@ static int indic_nextSyllableBoundary(HB
+ case Matra:
+ if (state == Consonant || state == Nukta)
+ break;
+- if (state == Matra) {
+- // ### needs proper testing for correct two/three part matras
+- break;
+- }
+ // ### not sure if this is correct. If it is, does it apply only to Bengali or should
+ // it work for all Indic languages?
+ // the combination Independent_A + Vowel Sign AA is allowed.
--- /dev/null
+diff -rup qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
+--- qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-06-30 07:23:12.000000000 +0530
++++ qt-everywhere-opensource-src-4.7.0-beta2_mod/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp 2010-09-20 11:40:58.000000000 +0530
+@@ -660,18 +660,18 @@ static const unsigned char indicPosition
+ None, None, None, None,
+
+ None, None, None, None,
+- None, None, None, None,
+- None, None, None, None,
+- None, None, None, None,
++ None, Below, Below, Below,
++ Below, Below, Below, Below,
++ Below, Below, None, Below,
+
+- None, None, None, None,
+- Below, None, None, None,
+- Below, None, None, None,
++ Below, Below, Below, Below,
++ Below, Below, Below, Below,
++ Below, None, Below, Below,
+ Below, Below, Below, Post,
+
+ Below, None, Below, Below,
+- None, None, None, None,
+- None, None, None, None,
++ None, Below, Below, Below,
++ Below, Below, None, None,
+ None, None, Post, Above,
+
+ Post, Below, Below, Below,
--- /dev/null
+diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp
+--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100
+@@ -569,6 +569,32 @@
+ void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups)
+ {
+ options.duplex->setEnabled(cups && cups->ppdOption("Duplex"));
++
++ if (cups) {
++ const ppd_option_t* duplex = cups->ppdOption("Duplex");
++ if (duplex) {
++ // copy default ppd duplex to qt dialog
++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
++ options.duplexShort->setChecked(true);
++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
++ options.duplexLong->setChecked(true);
++ else
++ options.noDuplex->setChecked(true);
++ }
++
++ if (cups->currentPPD()) {
++ // set default color
++ if (cups->currentPPD()->color_device)
++ options.color->setChecked(true);
++ else
++ options.grayscale->setChecked(true);
++ }
++
++ // set collation
++ const ppd_option_t *collate = cups->ppdOption("Collate");
++ if (collate)
++ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0);
++ }
+ }
+ #endif
+
+diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp
+--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100
+@@ -627,6 +627,44 @@
+ && d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) {
+ setOutputFormat(QPrinter::PdfFormat);
+ }
++
++#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
++ // fill in defaults from ppd file
++ QCUPSSupport cups;
++
++ int printernum = -1;
++ for (int i = 0; i < cups.availablePrintersCount(); i++) {
++ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name)
++ printernum = i;
++ }
++ if (printernum >= 0) {
++ cups.setCurrentPrinter(printernum);
++
++ const ppd_option_t* duplex = cups.ppdOption("Duplex");
++ if (duplex) {
++ // copy default ppd duplex to qt dialog
++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
++ setDuplex(DuplexShortSide);
++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
++ setDuplex(DuplexLongSide);
++ else
++ setDuplex(DuplexNone);
++ }
++
++ if (cups.currentPPD()) {
++ // set default color
++ if (cups.currentPPD()->color_device)
++ setColorMode(Color);
++ else
++ setColorMode(GrayScale);
++ }
++
++ // set collation
++ const ppd_option_t *collate = cups.ppdOption("Collate");
++ if (collate)
++ setCollateCopies(qstrcmp(collate->defchoice, "True")==0);
++ }
++#endif
+ }
+
+ /*!
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp.glib_eventloop_nullcheck qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp
+--- qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp.glib_eventloop_nullcheck 2010-06-01 21:03:15.000000000 -0500
++++ qt-everywhere-opensource-src-4.6.3/src/gui/kernel/qguieventdispatcher_glib.cpp 2010-06-29 14:58:12.299073784 -0500
+@@ -76,7 +76,7 @@ static gboolean x11EventSourcePrepare(GS
+ GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
+ return (XEventsQueued(X11->display, QueuedAfterFlush)
+ || (!(source->flags & QEventLoop::ExcludeUserInputEvents)
+- && !source->d->queuedUserInputEvents.isEmpty()));
++ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
+ }
+
+ static gboolean x11EventSourceCheck(GSource *s)
+@@ -84,7 +84,7 @@ static gboolean x11EventSourceCheck(GSou
+ GX11EventSource *source = reinterpret_cast<GX11EventSource *>(s);
+ return (XEventsQueued(X11->display, QueuedAfterFlush)
+ || (!(source->flags & QEventLoop::ExcludeUserInputEvents)
+- && !source->d->queuedUserInputEvents.isEmpty()));
++ && source->d && !source->d->queuedUserInputEvents.isEmpty()));
+ }
+
+ static gboolean x11EventSourceDispatch(GSource *s, GSourceFunc callback, gpointer user_data)
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.cpp.CVE-2010-1822-crash-svg-image qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.cpp
+--- qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.cpp.CVE-2010-1822-crash-svg-image 2010-09-10 11:05:20.000000000 +0200
++++ qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.cpp 2010-10-25 14:22:06.542771102 +0200
+@@ -86,6 +86,11 @@ RenderObject* SVGGElement::createRendere
+ return new (arena) RenderSVGTransformableContainer(this);
+ }
+
++bool SVGGElement::rendererIsNeeded(RenderStyle*)
++{
++ return parentNode() && parentNode()->isSVGElement();
++}
++
+ }
+
+ #endif // ENABLE(SVG)
+diff -up qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.h.CVE-2010-1822-crash-svg-image qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.h
+--- qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.h.CVE-2010-1822-crash-svg-image 2010-09-10 11:05:21.000000000 +0200
++++ qt-everywhere-opensource-src-4.7.0/src/3rdparty/webkit/WebCore/svg/SVGGElement.h 2010-10-25 14:28:37.467854695 +0200
+@@ -43,6 +43,7 @@ namespace WebCore {
+ virtual void parseMappedAttribute(MappedAttribute*);
+ virtual void svgAttributeChanged(const QualifiedName&);
+ virtual void synchronizeProperty(const QualifiedName&);
++ virtual bool rendererIsNeeded(RenderStyle*);
+ virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
+
+ virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
--- /dev/null
+From 6da6b7099d4e0b49329793e4b90703ec3d868048 Mon Sep 17 00:00:00 2001
+From: Frank Reininghaus <frank78ac@googlemail.com>
+Date: Wed, 22 Sep 2010 10:19:59 +0200
+Subject: [PATCH] QTreeView: do not scroll to top if last item is removed
+
+When the last item is the current item and is removed,
+QTreeViewPrivate::updateScrollBars() is called after QTreeViewPrivate's
+viewItems member is cleared. This commit makes sure that viewItems is
+restored by calling QTreeView::doItemsLayout() in this case, preventing
+that the scroll bar range is set to zero temporarily and the view is
+scrolled to the top unexpectedly (this was a regression in 4.7.0:
+QTBUG-13567).
+
+Merge-request: 2481
+Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com>
+
+diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
+index b797776..40b51fe 100644
+--- a/src/gui/itemviews/qtreeview.cpp
++++ b/src/gui/itemviews/qtreeview.cpp
+@@ -3435,6 +3435,10 @@ void QTreeViewPrivate::updateScrollBars()
+ if (!viewportSize.isValid())
+ viewportSize = QSize(0, 0);
+
++ if (viewItems.isEmpty()) {
++ q->doItemsLayout();
++ }
++
+ int itemsInViewport = 0;
+ if (uniformRowHeights) {
+ if (defaultItemHeight <= 0)
--- /dev/null
+From 9e9a7bc29319d52c3e563bc2c5282cb7e6890eba Mon Sep 17 00:00:00 2001
+From: Denis Dzyubenko <denis.dzyubenko@nokia.com>
+Date: Wed, 29 Sep 2010 14:02:10 +0200
+Subject: [PATCH] Fixes cursor shape when widget becomes native on X11.
+
+When a native window handle is created for a widget that has override
+cursor set, we should reset the cursor on the parent and set the cursor
+on the new window handle.
+
+Task-number: QTBUG-6185
+Reviewed-by: Olivier Goffart
+---
+ src/gui/kernel/qwidget_x11.cpp | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/src/gui/kernel/qwidget_x11.cpp b/src/gui/kernel/qwidget_x11.cpp
+index e01489f..8d80e10 100644
+--- a/src/gui/kernel/qwidget_x11.cpp
++++ b/src/gui/kernel/qwidget_x11.cpp
+@@ -889,8 +889,10 @@ void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyO
+ q->setWindowOpacity(maybeTopData()->opacity/255.);
+
+ }
+- } else if (q->testAttribute(Qt::WA_SetCursor) && q->internalWinId()) {
++ } else if (q->internalWinId()) {
+ qt_x11_enforce_cursor(q);
++ if (QWidget *p = q->parentWidget()) // reset the cursor on the native parent
++ qt_x11_enforce_cursor(p);
+ }
+
+ if (extra && !extra->mask.isEmpty() && q->internalWinId())
+--
+1.6.1
+
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/PluginDatabase.cpp.pluginpath qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/PluginDatabase.cpp
+--- qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/PluginDatabase.cpp.pluginpath 2010-05-03 19:43:20.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/WebCore/plugins/PluginDatabase.cpp 2010-06-18 10:02:37.004788646 -0500
+@@ -345,6 +345,7 @@ Vector<String> PluginDatabase::defaultPl
+ paths.append("/usr/lib/firefox/plugins");
+ paths.append("/usr/lib64/browser-plugins");
+ paths.append("/usr/lib/browser-plugins");
++ paths.append("/usr/lib/mozilla/plugins-wrapped");
+ paths.append("/usr/lib/mozilla/plugins");
+ paths.append("/usr/local/netscape/plugins");
+ paths.append("/opt/mozilla/plugins");
+@@ -355,6 +356,7 @@ Vector<String> PluginDatabase::defaultPl
+ paths.append("/usr/lib/netscape/plugins-libc5");
+ paths.append("/usr/lib/netscape/plugins-libc6");
+ paths.append("/usr/lib64/netscape/plugins");
++ paths.append("/usr/lib64/mozilla/plugins-wrapped");
+ paths.append("/usr/lib64/mozilla/plugins");
+ paths.append("/usr/lib/nsbrowser/plugins");
+ paths.append("/usr/lib64/nsbrowser/plugins");
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390x qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h
+--- qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h.s390x 2010-06-16 13:54:50.000000000 +0200
++++ qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2010-06-16 13:53:43.000000000 +0200
+@@ -179,6 +179,18 @@
+ #define WTF_CPU_SPARC 1
+ #endif
+
++/* CPU(S390X) - S390 64-bit */
++#if defined(__s390x__)
++#define WTF_CPU_S390X 1
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++
++/* CPU(S390) - S390 32-bit */
++#if defined(__s390__)
++#define WTF_CPU_S390 1
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++
+ /* CPU(X86) - i386 / x86 32-bit */
+ #if defined(__i386__) \
+ || defined(i386) \
+@@ -860,7 +872,7 @@
+ #endif
+
+ #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64)
+-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64)
++#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(S390X)
+ #define WTF_USE_JSVALUE64 1
+ #elif CPU(ARM) || CPU(PPC64)
+ #define WTF_USE_JSVALUE32 1
+diff -up qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h.s390x qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h
+--- qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h.s390x 2010-06-16 13:49:00.000000000 +0200
++++ qt-everywhere-opensource-src-4.7.0-beta1/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h 2010-06-16 13:50:01.000000000 +0200
+@@ -169,6 +169,18 @@
+ #define WTF_CPU_SPARC 1
+ #endif
+
++/* CPU(S390X) - S390 64-bit */
++#if defined(__s390x__)
++#define WTF_CPU_S390X 1
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++
++/* CPU(S390) - S390 32-bit */
++#if defined(__s390__)
++#define WTF_CPU_S390 1
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++
+ /* CPU(X86) - i386 / x86 32-bit */
+ #if defined(__i386__) \
+ || defined(i386) \
+@@ -874,6 +886,7 @@
+ #if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS))) \
+ || (CPU(IA64) && !CPU(IA64_32)) \
+ || CPU(ALPHA) \
++ || CPU(S390X) \
+ || CPU(SPARC64)
+ #define WTF_USE_JSVALUE64 1
+ #elif CPU(ARM) || CPU(PPC64) || CPU(MIPS)
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/embed.cpp.uic_multilib qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/embed.cpp
+--- qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/embed.cpp.uic_multilib 2010-05-03 19:43:25.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/embed.cpp 2010-06-25 14:11:21.815474310 -0500
+@@ -152,7 +152,7 @@ void Ui3Reader::embed(const char *projec
+ for ( it = images.begin(); it != images.end(); ++it )
+ out << "** " << *it << "\n";
+ out << "**\n";
+- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
++ out << "** Created: " << "\n";
+ out << "** by: The User Interface Compiler for Qt version " << QT_VERSION_STR << "\n";
+ out << "**\n";
+ out << "** WARNING! All changes made in this file will be lost!\n";
+diff -up qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/uic.cpp
+--- qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/uic.cpp.uic_multilib 2010-05-03 19:43:25.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic3/uic.cpp 2010-06-25 14:11:32.910460623 -0500
+@@ -146,7 +146,7 @@ void Uic::writeCopyrightHeader(DomUI *ui
+ out << "/********************************************************************************\n";
+ out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n";
+ out << "**\n";
+- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
++ out << "** Created: " << "\n";
+ out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
+ out << "**\n";
+ out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n";
+diff -up qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic/uic.cpp.uic_multilib qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic/uic.cpp
+--- qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic/uic.cpp.uic_multilib 2010-05-03 19:43:25.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta1/src/tools/uic/uic.cpp 2010-06-25 14:10:45.360711498 -0500
+@@ -139,7 +139,7 @@ void Uic::writeCopyrightHeader(DomUI *ui
+ out << "/********************************************************************************\n";
+ out << "** Form generated from reading UI file '" << QFileInfo(opt.inputFile).fileName() << "'\n";
+ out << "**\n";
+- out << "** Created: " << QDateTime::currentDateTime().toString() << "\n";
++ out << "** Created: " << "\n";
+ out << "** " << QString::fromLatin1("by: Qt User Interface Compiler version %1\n").arg(QLatin1String(QT_VERSION_STR));
+ out << "**\n";
+ out << "** WARNING! All changes made in this file will be lost when recompiling UI file!\n";
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0-beta2/src/corelib/kernel/qcoreapplication.cpp.kde4_plugins qt-everywhere-opensource-src-4.7.0-beta2/src/corelib/kernel/qcoreapplication.cpp
+--- qt-everywhere-opensource-src-4.7.0-beta2/src/corelib/kernel/qcoreapplication.cpp.kde4_plugins 2010-06-29 20:53:15.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta2/src/corelib/kernel/qcoreapplication.cpp 2010-07-08 08:24:12.714604479 -0500
+@@ -2262,6 +2262,15 @@ QStringList QCoreApplication::libraryPat
+ if (!app_libpaths->contains(installPathPlugins))
+ app_libpaths->append(installPathPlugins);
+ }
++
++ // hack in support for kde4 plugin paths -- Rex
++ QString kde4PathPlugins = QLibraryInfo::location(QLibraryInfo::LibrariesPath) + QLatin1String("/kde4/plugins");
++ if (QFile::exists(kde4PathPlugins)) {
++ // Make sure we convert from backslashes to slashes.
++ // kde4PathPlugins = QDir(kde4PathPlugins).canonicalPath();
++ if (!app_libpaths->contains(kde4PathPlugins))
++ app_libpaths->append(kde4PathPlugins);
++ }
+ #endif
+
+ // If QCoreApplication is not yet instantiated,
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0-beta2/configure.mysql_config qt-everywhere-opensource-src-4.7.0-beta2/configure
+--- qt-everywhere-opensource-src-4.7.0-beta2/configure.mysql_config 2010-06-29 20:53:10.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta2/configure 2010-07-08 08:30:32.148864934 -0500
+@@ -4849,8 +4849,15 @@ for _SQLDR in $CFG_SQL_AVAILABLE; do
+ [ -z "$CFG_MYSQL_CONFIG" ] && CFG_MYSQL_CONFIG=`"$WHICH" mysql_config`
+ if [ -x "$CFG_MYSQL_CONFIG" ]; then
+ QT_CFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --include 2>/dev/null`
++ $CFG_MYSQL_CONFIG --pkglibdir &>/dev/null && \
++ QT_MYSQL_PKGLIBDIR=`$CFG_MYSQL_CONFIG --pkglibdir 2>/dev/null`
++ if [ -n "$QT_MYSQL_PKGLIBDIR" ]; then
++ QT_LFLAGS_MYSQL_R="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient_r"
++ QT_LFLAGS_MYSQL="-L$QT_MYSQL_PKGLIBDIR -lmysqlclient"
++ else
+ QT_LFLAGS_MYSQL_R=`$CFG_MYSQL_CONFIG --libs_r 2>/dev/null`
+ QT_LFLAGS_MYSQL=`$CFG_MYSQL_CONFIG --libs 2>/dev/null`
++ fi
+ QT_MYSQL_VERSION=`$CFG_MYSQL_CONFIG --version 2>/dev/null`
+ QT_MYSQL_VERSION_MAJOR=`echo $QT_MYSQL_VERSION | cut -d . -f 1`
+ fi
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/phonon/gstreamer/gstreamer.desktop.servicesfile qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/phonon/gstreamer/gstreamer.desktop
+--- qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/phonon/gstreamer/gstreamer.desktop.servicesfile 2010-06-29 20:53:12.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta2/src/3rdparty/phonon/gstreamer/gstreamer.desktop 2010-07-08 08:25:50.419855085 -0500
+@@ -2,7 +2,7 @@
+ Type=Service
+ X-KDE-ServiceTypes=PhononBackend
+ MimeType=application/x-annodex;video/quicktime;video/x-quicktime;audio/x-m4a;application/x-quicktimeplayer;video/mkv;video/msvideo;video/x-msvideo;video/x-flic;audio/x-aiff;audio/aiff;audio/x-pn-aiff;audio/x-realaudio;audio/basic;audio/x-basic;audio/x-pn-au;audio/x-8svx;audio/8svx;audio/x-16sv;audio/168sv;image/x-ilbm;image/ilbm;video/x-anim;video/anim;image/png;image/x-png;video/mng;video/x-mng;audio/x-ogg;audio/x-speex+ogg;application/ogg;application/ogg;audio/vnd.rn-realaudio;audio/x-pn-realaudio-plugin;audio/x-real-audio;application/vnd.rn-realmedia;video/mpeg;video/x-mpeg;audio/x-wav;audio/wav;audio/x-pn-wav;audio/x-pn-windows-acm;audio/mpeg2;audio/x-mpeg2;audio/mpeg3;audio/x-mpeg3;audio/mpeg;audio/x-mpeg;x-mpegurl;audio/x-mpegurl;audio/mp3;audio/mpeg;
+-X-KDE-Library=phonon_gstreamer
++X-KDE-Library=libphonon_gstreamer
+ X-KDE-PhononBackendInfo-InterfaceVersion=1
+ X-KDE-PhononBackendInfo-Version=0.1
+ X-KDE-PhononBackendInfo-Website=http://gstreamer.freedesktop.org/
+diff -up qt-everywhere-opensource-src-4.7.0-beta2/src/phonon/phonon.pro.servicesfile qt-everywhere-opensource-src-4.7.0-beta2/src/phonon/phonon.pro
+--- qt-everywhere-opensource-src-4.7.0-beta2/src/phonon/phonon.pro.servicesfile 2010-06-29 20:53:13.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta2/src/phonon/phonon.pro 2010-07-08 08:26:58.307612257 -0500
+@@ -122,6 +122,11 @@ contains(QT_CONFIG, dbus) {
+ DEFINES += QT_NO_DBUS
+ }
+
++# install dbus service file
++sources.files = $$PHONON_DIR/org.kde.Phonon.AudioOutput.xml
++sources.path = /usr/share/dbus-1/interfaces
++INSTALLS += sources
++
+ contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols
+
+ unix:!isEmpty(QT_CFLAGS_PULSEAUDIO) {
+diff -up qt-everywhere-opensource-src-4.7.0-beta2/src/plugins/phonon/gstreamer/gstreamer.pro.servicesfile qt-everywhere-opensource-src-4.7.0-beta2/src/plugins/phonon/gstreamer/gstreamer.pro
+--- qt-everywhere-opensource-src-4.7.0-beta2/src/plugins/phonon/gstreamer/gstreamer.pro.servicesfile 2010-06-29 20:53:14.000000000 -0500
++++ qt-everywhere-opensource-src-4.7.0-beta2/src/plugins/phonon/gstreamer/gstreamer.pro 2010-07-08 08:25:50.387854526 -0500
+@@ -64,6 +64,8 @@ SOURCES += $$PHONON_GSTREAMER_DIR/abstra
+ }
+
+ target.path = $$[QT_INSTALL_PLUGINS]/phonon_backend
+-INSTALLS += target
++services.files = $$PHONON_GSTREAMER_DIR/gstreamer.desktop
++services.path = /usr/share/kde4/services/phononbackends
++INSTALLS += target services
+
+ include(../../qpluginbase.pri)
--- /dev/null
+diff -up qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp.me qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp
+--- qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp.me 2010-10-15 22:04:09.000000000 +0200
++++ qt-everywhere-opensource-src-4.7.0/src/gui/image/qpixmap_x11.cpp 2010-10-15 22:04:18.000000000 +0200
+@@ -900,9 +900,9 @@ void QX11PixmapData::fromImage(const QIm
+ case BPP24_888: // 24 bit MSB
+ CYCLE(
+ for (int x=0; x<w; x++) {
+- *dst++ = qRed (*p);
++ *dst++ = qBlue (*p);
+ *dst++ = qGreen(*p);
+- *dst++ = qBlue (*p++);
++ *dst++ = qRed (*p++);
+ }
+ )
+ break;
--- /dev/null
+--- qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-64/qmake.conf.multilib 2006-11-27 11:26:42.000000000 -0600
++++ qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-64/qmake.conf 2007-02-26 15:01:02.000000000 -0600
+@@ -14,6 +14,8 @@
+ QMAKE_CFLAGS = -m64
+ QMAKE_LFLAGS = -m64
+
++QMAKE_CFLAGS_RELEASE += -O2
++
+ include(../common/g++.conf)
+ include(../common/linux.conf)
+
+--- qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-32/qmake.conf.multilib 2006-11-27 11:26:42.000000000 -0600
++++ qt-x11-opensource-src-4.2.2/mkspecs/linux-g++-32/qmake.conf 2007-02-26 15:01:34.000000000 -0600
+@@ -11,6 +11,8 @@
+ QMAKE_CFLAGS = -m32
+ QMAKE_LFLAGS = -m32
+
++QMAKE_CFLAGS_RELEASE += -O2
++
+ include(../common/g++.conf)
+ include(../common/linux.conf)
+ load(qt_config)
+--- qt-x11-opensource-src-4.2.2/mkspecs/linux-g++/qmake.conf.multilib 2006-11-27 11:26:42.000000000 -0600
++++ qt-x11-opensource-src-4.2.2/mkspecs/linux-g++/qmake.conf 2007-02-26 15:01:26.000000000 -0600
+@@ -8,6 +8,8 @@
+ QT += core gui
+ QMAKE_INCREMENTAL_STYLE = sublib
+
++QMAKE_CFLAGS_RELEASE += -O2
++
+ include(../common/g++.conf)
+ include(../common/linux.conf)
+ load(qt_config)
--- /dev/null
+diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h
+--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_i386.h 2009-02-25 22:09:21.000000000 +0100
++++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_i386.h 2009-04-01 17:54:21.000000000 +0200
+@@ -115,8 +115,8 @@
+ asm volatile("lock\n"
+ "incl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
+@@ -127,8 +127,8 @@
+ asm volatile("lock\n"
+ "decl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
+diff -ur qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h
+--- qt-x11-opensource-src-4.5.0/src/corelib/arch/qatomic_x86_64.h 2009-02-25 22:09:21.000000000 +0100
++++ qt-x11-opensource-src-4.5.0-fix-qatomic-inline-asm/src/corelib/arch/qatomic_x86_64.h 2009-04-01 17:54:32.000000000 +0200
+@@ -116,8 +116,8 @@
+ asm volatile("lock\n"
+ "incl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
+@@ -128,8 +128,8 @@
+ asm volatile("lock\n"
+ "decl %0\n"
+ "setne %1"
+- : "=m" (_q_value), "=qm" (ret)
+- : "m" (_q_value)
++ : "+m" (_q_value), "=qm" (ret)
++ :
+ : "memory");
+ return ret != 0;
+ }
--- /dev/null
+diff -up qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp
+--- qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp.enable_ft_lcdfilter 2009-04-21 18:57:41.000000000 -0500
++++ qt-x11-opensource-src-4.5.1/src/gui/text/qfontengine_ft.cpp 2009-04-24 11:17:49.562695405 -0500
+@@ -72,7 +72,7 @@
+ #include FT_CONFIG_OPTIONS_H
+ #endif
+
+-#if defined(FT_LCD_FILTER_H) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
++#if defined(FT_LCD_FILTER_H)
+ #define QT_USE_FREETYPE_LCDFILTER
+ #endif
+
PKG_NAME = qt
PKG_VER = 4.7.0
-PKG_REL = 1
+PKG_REL = 2
PKG_MAINTAINER =
PKG_GROUP = System/Libraries