Compare commits

...

20 Commits
master ... f14

Author SHA1 Message Date
Rex Dieter
b978dead28 drop kde-qt 0012 patch, it's broken if not upstream (#704882) 2011-11-16 09:11:21 -06:00
Rex Dieter
01392e94e4 build declarative/qml with -fno-strict-aliasing (#748936, QTBUG-19736)
build tds sql driver with -fno-strict-aliasing
2011-11-03 13:10:19 -05:00
Rex Dieter
b2c64a8205 crash when using a visual with 24 bits per pixel (QTBUG-21754) 2011-10-28 16:17:14 -05:00
Rex Dieter
1226c06a0a -webkit: Provides: qtwebkit(-devel) 2011-10-17 11:32:11 -05:00
Rex Dieter
9ed5612df8 Qt doesn't close orphaned file descriptors after printing (#746601, QTBUG-14724) 2011-10-17 11:04:03 -05:00
Rex Dieter
78e2db278c Set proper architecture flags for armv7hl and admv7hnl (#744701)
fix ARM Thumb2 build (QTBUG-16402)
2011-10-10 10:39:49 -05:00
Lukas Tinkl
492bd93223 fix sources, oops 2011-09-16 09:11:12 +02:00
Lukas Tinkl
4d282ff93f respun upstream tarball to fix offline HTML docu
(https://bugreports.qt.nokia.com/browse/QTBUG-21454)
2011-09-16 08:58:57 +02:00
Rex Dieter
0e8f71ddd4 drop kde-qt-patches.sh, haven't used it in ages 2011-09-02 10:31:24 -05:00
Rex Dieter
9fed71c90e drop merged patch from .spec too 2011-09-02 10:31:08 -05:00
Than Ngo
b4827db4fc it's merged in upstream 2011-09-02 16:05:01 +02:00
Rex Dieter
b38ecb620b 4.7.4 2011-09-02 08:30:58 -05:00
Than Ngo
979fb02c8a drop unused rhel conditional 2011-08-27 00:10:49 +02:00
Rex Dieter
fa9aa5e3fa fix QMAKE_LIBDIR_QT, for missing QT_SHARED define (#725183) 2011-07-23 16:42:46 -05:00
Rex Dieter
18261c636d BR: libXtst-devel for qvfb 2011-07-08 09:55:12 -05:00
Rex Dieter
1888dd486d Adding qt-sql-ibase driver for qt (#719002)
qvfb subpackage (#718416)
2011-07-08 08:29:10 -05:00
Rex Dieter
b70808d1e3 fix bug reference 2011-06-22 12:32:42 -05:00
Rex Dieter
3e7013fc87 fontconfig patch respin (#705347, QTBUG-19947) 2011-06-21 09:45:01 -05:00
Rex Dieter
9c291e4915 updated fontconfig patch (#705347, QTBUG-19947) 2011-06-20 09:33:43 -05:00
Than Ngo
d8fc052b31 bz#705348, Lohit fonts accidentally disable the bytecode interpreter for Qt 2011-06-07 18:04:45 +02:00
13 changed files with 548 additions and 187 deletions

21
.gitignore vendored
View File

@ -1,10 +1,11 @@
hi128-app-qt4-logo.png
hi48-app-qt4-logo.png
gstreamer-logo.svg
hi128-phonon-gstreamer.png
hi16-phonon-gstreamer.png
hi22-phonon-gstreamer.png
hi32-phonon-gstreamer.png
hi48-phonon-gstreamer.png
hi64-phonon-gstreamer.png
/qt-everywhere-opensource-src-4.7.3.tar.gz
/hi128-app-qt4-logo.png
/hi48-app-qt4-logo.png
/gstreamer-logo.svg
/hi128-phonon-gstreamer.png
/hi16-phonon-gstreamer.png
/hi22-phonon-gstreamer.png
/hi32-phonon-gstreamer.png
/hi48-phonon-gstreamer.png
/hi64-phonon-gstreamer.png
/qt-everywhere-opensource-src-4.7.4.tar.gz
/qt-everywhere-opensource-src-4.8.0-rc1.tar.gz

View File

@ -1,70 +0,0 @@
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

View File

@ -1,57 +0,0 @@
From 4d3b9aa83cf7f6d9f9b88d9936e5980629daac2a Mon Sep 17 00:00:00 2001
From: Cristiano di Flora <cristiano.di-flora@nokia.com>
Date: Tue, 22 Feb 2011 05:27:51 +0200
Subject: [PATCH] Fix QNetworkConfigurationManager crash due to null private pointer.
Reviewed-by: Aaron McCarthy
Task-Number: QTBUG-17305
(cherry picked from commit 7388fcb83592a90aace054314e0c3e7e7a94fdae)
---
src/network/bearer/qnetworkconfigmanager.cpp | 17 +++++------------
1 files changed, 5 insertions(+), 12 deletions(-)
diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp
index 0e3c519..7eadb82 100644
--- a/src/network/bearer/qnetworkconfigmanager.cpp
+++ b/src/network/bearer/qnetworkconfigmanager.cpp
@@ -57,16 +57,17 @@ QT_BEGIN_NAMESPACE
{ \
delete this_##NAME.pointer; \
this_##NAME.pointer = 0; \
- this_##NAME.destroyed = true; \
} \
static TYPE *NAME() \
{ \
- if (!this_##NAME.pointer && !this_##NAME.destroyed) { \
+ if (!this_##NAME.pointer) { \
TYPE *x = new TYPE; \
if (!this_##NAME.pointer.testAndSetOrdered(0, x)) \
delete x; \
- else \
+ else { \
qAddPostRoutine(NAME##_cleanup); \
+ this_##NAME.pointer->updateConfigurations(); \
+ } \
} \
return this_##NAME.pointer; \
}
@@ -75,15 +76,7 @@ Q_GLOBAL_STATIC_QAPP_DESTRUCTION(QNetworkConfigurationManagerPrivate, connManage
QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate()
{
- static bool initialized = false;
-
- QNetworkConfigurationManagerPrivate *m = connManager();
- if (!initialized) {
- initialized = true;
- m->updateConfigurations();
- }
-
- return m;
+ return connManager();
}
/*!
--
1.6.1

View File

@ -0,0 +1,23 @@
diff -up qt-everywhere-opensource-src-4.7.4/src/corelib/arch/qatomic_armv6.h.thumb qt-everywhere-opensource-src-4.7.4/src/corelib/arch/qatomic_armv6.h
--- qt-everywhere-opensource-src-4.7.4/src/corelib/arch/qatomic_armv6.h.thumb 2011-09-17 20:01:15.636182558 +0200
+++ qt-everywhere-opensource-src-4.7.4/src/corelib/arch/qatomic_armv6.h 2011-09-17 20:04:06.752642585 +0200
@@ -144,6 +144,9 @@ inline bool QBasicAtomicInt::testAndSetO
asm volatile("0:\n"
"ldrex %[result], [%[_q_value]]\n"
"eors %[result], %[result], %[expectedValue]\n"
+#ifdef __thumb__
+ "itt eq\n"
+#endif
"strexeq %[result], %[newValue], [%[_q_value]]\n"
"teqeq %[result], #1\n"
"beq 0b\n"
@@ -202,6 +205,9 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPoint
asm volatile("0:\n"
"ldrex %[result], [%[_q_value]]\n"
"eors %[result], %[result], %[expectedValue]\n"
+#ifdef __thumb__
+ "itt eq\n"
+#endif
"strexeq %[result], %[newValue], [%[_q_value]]\n"
"teqeq %[result], #1\n"
"beq 0b\n"

View File

@ -0,0 +1,230 @@
From 589a94ddb30499b0f3ecaf909a5b291d64d02dc7 Mon Sep 17 00:00:00 2001
From: Jiang Jiang <jiang.jiang@nokia.com>
Date: Mon, 20 Jun 2011 13:47:01 +0200
Subject: [PATCH] Fix fontconfig usage in X11 font database
We should do FcConfigSubstitute(0, pattern, FcMatchFont) on a
FcPattern for query because the family list in it will contain
almost all the families after FcConfigSubstitute(0, pattern,
FcMatchPattern), then the test in <match target="font"> will
almost always succeed. In general, FcMatchFont substitute
should only be done on the FcPattern that we got after
FcFontMatch() or FcFontRenderPrepare().
Based on the suggestion of fontconfig author Behdad Esfahbod,
this patch reorganized the tryPatternLoad logic so that it only
does the QFontEngine creation part, FcPattern *match is retrieved
outside of that function. In this way, the match pattern we got
can be either from FcFontMatch() or after FcFontRenderPrepare()
on one of the fonts we got from qt_fontSetForPattern(). Then we
don't need to duplicate the pattern and add all criterias back
with qt_addPatternProps(). It not only simplified the code a lot
but also fix the way we apply FcMatchFont substitution. This
substitution will either be done by FcFontMatch() or
FcFontRenderPrepare, both implicitly.
Task-number: QTBUG-2148, QTBUG-19947
Reviewed-by: Eskil
---
src/gui/text/qfontdatabase_x11.cpp | 55 +++++++++++++++---------------------
src/gui/text/qfontengine_x11.cpp | 28 +++++-------------
2 files changed, 31 insertions(+), 52 deletions(-)
diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp
index 754334c..958daa2 100644
--- a/src/gui/text/qfontdatabase_x11.cpp
+++ b/src/gui/text/qfontdatabase_x11.cpp
@@ -1566,9 +1566,8 @@ static FcPattern *getFcPattern(const QFontPrivate *fp, int script, const QFontDe
qt_addPatternProps(pattern, fp->screen, script, request);
- FcDefaultSubstitute(pattern);
FcConfigSubstitute(0, pattern, FcMatchPattern);
- FcConfigSubstitute(0, pattern, FcMatchFont);
+ FcDefaultSubstitute(pattern);
// these should only get added to the pattern _after_ substitution
// append the default fallback font for the specified script
@@ -1606,35 +1605,20 @@ static void FcFontSetRemove(FcFontSet *fs, int at)
memmove(fs->fonts + at, fs->fonts + at + 1, len);
}
-static QFontEngine *tryPatternLoad(FcPattern *p, int screen,
- const QFontDef &request, int script, FcPattern **matchedPattern = 0)
+static QFontEngine *tryPatternLoad(FcPattern *match, int screen,
+ const QFontDef &request, int script)
{
#ifdef FONT_MATCH_DEBUG
FcChar8 *fam;
- FcPatternGetString(p, FC_FAMILY, 0, &fam);
+ FcPatternGetString(match, FC_FAMILY, 0, &fam);
FM_DEBUG("==== trying %s\n", fam);
#endif
FM_DEBUG("passes charset test\n");
- FcPattern *pattern = FcPatternDuplicate(p);
- // add properties back in as the font selected from the
- // list doesn't contain them.
- qt_addPatternProps(pattern, screen, script, request);
-
- FcConfigSubstitute(0, pattern, FcMatchPattern);
- FcDefaultSubstitute(pattern);
- FcResult res;
- FcPattern *match = FcFontMatch(0, pattern, &res);
-
- if (matchedPattern)
- *matchedPattern = 0;
QFontEngineX11FT *engine = 0;
if (!match) // probably no fonts available.
goto done;
- if (matchedPattern)
- *matchedPattern = FcPatternDuplicate(match);
-
if (script != QUnicodeTables::Common) {
// skip font if it doesn't support the language we want
if (specialChars[script]) {
@@ -1673,11 +1657,6 @@ static QFontEngine *tryPatternLoad(FcPattern *p, int screen,
}
}
done:
- FcPatternDestroy(pattern);
- if (!engine && matchedPattern && *matchedPattern) {
- FcPatternDestroy(*matchedPattern);
- *matchedPattern = 0;
- }
return engine;
}
@@ -1726,14 +1705,26 @@ static QFontEngine *loadFc(const QFontPrivate *fp, int script, const QFontDef &r
#endif
QFontEngine *fe = 0;
- FcPattern *matchedPattern = 0;
- fe = tryPatternLoad(pattern, fp->screen, request, script, &matchedPattern);
+ FcResult res;
+ FcPattern *match = FcFontMatch(0, pattern, &res);
+ fe = tryPatternLoad(match, fp->screen, request, script);
if (!fe) {
FcFontSet *fs = qt_fontSetForPattern(pattern, request);
+ if (match) {
+ FcPatternDestroy(match);
+ match = 0;
+ }
+
if (fs) {
- for (int i = 0; !fe && i < fs->nfont; ++i)
- fe = tryPatternLoad(fs->fonts[i], fp->screen, request, script, &matchedPattern);
+ for (int i = 0; !fe && i < fs->nfont; ++i) {
+ match = FcFontRenderPrepare(NULL, pattern, fs->fonts[i]);
+ fe = tryPatternLoad(match, fp->screen, request, script);
+ if (fe)
+ break;
+ FcPatternDestroy(match);
+ match = 0;
+ }
FcFontSetDestroy(fs);
}
FM_DEBUG("engine for script %d is %s\n", script, fe ? fe->fontDef.family.toLatin1().data(): "(null)");
@@ -1741,11 +1732,11 @@ static QFontEngine *loadFc(const QFontPrivate *fp, int script, const QFontDef &r
if (fe
&& script == QUnicodeTables::Common
&& !(request.styleStrategy & QFont::NoFontMerging) && !fe->symbol) {
- fe = new QFontEngineMultiFT(fe, matchedPattern, pattern, fp->screen, request);
+ fe = new QFontEngineMultiFT(fe, match, pattern, fp->screen, request);
} else {
FcPatternDestroy(pattern);
- if (matchedPattern)
- FcPatternDestroy(matchedPattern);
+ if (match)
+ FcPatternDestroy(match);
}
return fe;
}
diff --git a/src/gui/text/qfontengine_x11.cpp b/src/gui/text/qfontengine_x11.cpp
index e3bfa5d..490866c 100644
--- a/src/gui/text/qfontengine_x11.cpp
+++ b/src/gui/text/qfontengine_x11.cpp
@@ -863,11 +863,8 @@ glyph_t QFontEngineXLFD::glyphIndexToFreetypeGlyphIndex(glyph_t g) const
// Multi FT engine
// ------------------------------------------------------------------
-static QFontEngine *engineForPattern(FcPattern *pattern, const QFontDef &request,
- int screen)
+static QFontEngine *engineForPattern(FcPattern *match, const QFontDef &request, int screen)
{
- FcResult res;
- FcPattern *match = FcFontMatch(0, pattern, &res);
QFontEngineX11FT *engine = new QFontEngineX11FT(match, request, screen);
if (!engine->invalid())
return engine;
@@ -879,9 +876,9 @@ static QFontEngine *engineForPattern(FcPattern *pattern, const QFontDef &request
}
QFontEngineMultiFT::QFontEngineMultiFT(QFontEngine *fe, FcPattern *matchedPattern, FcPattern *p, int s, const QFontDef &req)
- : QFontEngineMulti(2), request(req), pattern(p), firstEnginePattern(matchedPattern), fontSet(0), screen(s)
+ : QFontEngineMulti(2), request(req), pattern(p), fontSet(0), screen(s)
{
-
+ firstEnginePattern = FcPatternDuplicate(matchedPattern);
engines[0] = fe;
engines.at(0)->ref.ref();
fontDef = engines[0]->fontDef;
@@ -907,8 +904,6 @@ void QFontEngineMultiFT::loadEngine(int at)
extern QMutex *qt_fontdatabase_mutex();
QMutexLocker locker(qt_fontdatabase_mutex());
- extern void qt_addPatternProps(FcPattern *pattern, int screen, int script,
- const QFontDef &request);
extern QFontDef qt_FcPatternToQFontDef(FcPattern *pattern, const QFontDef &);
extern FcFontSet *qt_fontSetForPattern(FcPattern *pattern, const QFontDef &request);
@@ -940,22 +935,18 @@ void QFontEngineMultiFT::loadEngine(int at)
Q_ASSERT(at < engines.size());
Q_ASSERT(engines.at(at) == 0);
- FcPattern *pattern = FcPatternDuplicate(fontSet->fonts[at + firstFontIndex - 1]);
- qt_addPatternProps(pattern, screen, QUnicodeTables::Common, request);
-
- QFontDef fontDef = qt_FcPatternToQFontDef(pattern, this->request);
+ FcPattern *match = FcFontRenderPrepare(NULL, pattern, fontSet->fonts[at + firstFontIndex - 1]);
+ QFontDef fontDef = qt_FcPatternToQFontDef(match, this->request);
// note: we use -1 for the script to make sure that we keep real
// FT engines separate from Multi engines in the font cache
QFontCache::Key key(fontDef, -1, screen);
QFontEngine *fontEngine = QFontCache::instance()->findEngine(key);
if (!fontEngine) {
- FcConfigSubstitute(0, pattern, FcMatchPattern);
- FcDefaultSubstitute(pattern);
- fontEngine = engineForPattern(pattern, request, screen);
+ fontEngine = engineForPattern(match, request, screen);
QFontCache::instance()->insertEngine(key, fontEngine);
}
- FcPatternDestroy(pattern);
+ FcPatternDestroy(match);
fontEngine->ref.ref();
engines[at] = fontEngine;
}
@@ -1123,17 +1114,14 @@ QFontEngineX11FT::QFontEngineX11FT(FcPattern *pattern, const QFontDef &fd, int s
}
#endif
- if (!init(face_id, antialias, defaultFormat)) {
- FcPatternDestroy(pattern);
+ if (!init(face_id, antialias, defaultFormat))
return;
- }
if (!freetype->charset) {
FcCharSet *cs;
FcPatternGetCharSet (pattern, FC_CHARSET, 0, &cs);
freetype->charset = FcCharSetCopy(cs);
}
- FcPatternDestroy(pattern);
}
QFontEngineX11FT::~QFontEngineX11FT()
--
1.7.4.1

View File

@ -1,6 +0,0 @@
# quick-n-dirty method to fetch patches from -patched git branch
# unfortunately, requires an already checked-out copy of the git repo
# when switching branches, use something like: git checkout --track remotes/origin/4.6-stable-patched
git format-patch --output-directory kde-qt-patches v4.6.1..origin/4.6.1-patched

View File

@ -1,13 +0,0 @@
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 406e1f6..4691b17 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -3223,7 +3223,7 @@ int QTreeViewPrivate::itemHeight(int item) const
return defaultItemHeight;
if (viewItems.isEmpty())
return 0;
- const QModelIndex &index = viewItems.at(item).index;
+ QModelIndex index = viewItems.at(item).index;
int height = viewItems.at(item).height;
if (height <= 0 && index.isValid()) {
height = q_func()->indexRowSizeHint(index);

View File

@ -0,0 +1,117 @@
diff -up qt-everywhere-opensource-src-4.7.4/src/gui/image/qnativeimage.cpp.QTBUG-21754 qt-everywhere-opensource-src-4.7.4/src/gui/image/qnativeimage.cpp
--- qt-everywhere-opensource-src-4.7.4/src/gui/image/qnativeimage.cpp.QTBUG-21754 2011-09-12 01:49:28.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.4/src/gui/image/qnativeimage.cpp 2011-10-28 16:04:53.836638684 -0500
@@ -150,7 +150,12 @@ QImage::Format QNativeImage::systemForma
QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* isTextBuffer */, QWidget *widget)
: xshmimg(0), xshmpm(0)
{
- if (!X11->use_mitshm) {
+ QX11Info info = widget->x11Info();
+
+ int dd = info.depth();
+ Visual *vis = (Visual*) info.visual();
+
+ if (!X11->use_mitshm || format != QImage::Format_RGB16 && X11->bppForDepth.value(dd) != 32) {
image = QImage(width, height, format);
// follow good coding practice and set xshminfo attributes, though values not used in this case
xshminfo.readOnly = true;
@@ -160,11 +165,6 @@ QNativeImage::QNativeImage(int width, in
return;
}
- QX11Info info = widget->x11Info();
-
- int dd = info.depth();
- Visual *vis = (Visual*) info.visual();
-
xshmimg = XShmCreateImage(X11->display, vis, dd, ZPixmap, 0, &xshminfo, width, height);
if (!xshmimg) {
qWarning("QNativeImage: Unable to create shared XImage.");
diff -up qt-everywhere-opensource-src-4.7.4/src/gui/image/qpixmap_x11.cpp.QTBUG-21754 qt-everywhere-opensource-src-4.7.4/src/gui/image/qpixmap_x11.cpp
--- qt-everywhere-opensource-src-4.7.4/src/gui/image/qpixmap_x11.cpp.QTBUG-21754 2011-09-12 01:49:28.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.4/src/gui/image/qpixmap_x11.cpp 2011-10-28 16:04:53.837638713 -0500
@@ -897,12 +897,20 @@ void QX11PixmapData::fromImage(const QIm
}
)
break;
- case BPP24_888: // 24 bit MSB
+ case BPP24_888:
CYCLE(
- for (int x=0; x<w; x++) {
- *dst++ = qRed (*p);
- *dst++ = qGreen(*p);
- *dst++ = qBlue (*p++);
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ for (int x=0; x<w; x++) {
+ *dst++ = qRed (*p);
+ *dst++ = qGreen(*p);
+ *dst++ = qBlue (*p++);
+ }
+ } else {
+ for (int x=0; x<w; x++) {
+ *dst++ = qBlue (*p);
+ *dst++ = qGreen(*p);
+ *dst++ = qRed (*p++);
+ }
}
)
break;
diff -up qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qapplication_x11.cpp.QTBUG-21754 qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qapplication_x11.cpp
--- qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qapplication_x11.cpp.QTBUG-21754 2011-09-12 01:49:28.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qapplication_x11.cpp 2011-10-28 16:04:53.838638742 -0500
@@ -1892,6 +1892,12 @@ void qt_init(QApplicationPrivate *priv,
X11->defaultScreen = DefaultScreen(X11->display);
X11->screenCount = ScreenCount(X11->display);
+ int formatCount = 0;
+ XPixmapFormatValues *values = XListPixmapFormats(X11->display, &formatCount);
+ for (int i = 0; i < formatCount; ++i)
+ X11->bppForDepth[values[i].depth] = values[i].bits_per_pixel;
+ XFree(values);
+
X11->screens = new QX11InfoData[X11->screenCount];
X11->argbVisuals = new Visual *[X11->screenCount];
X11->argbColormaps = new Colormap[X11->screenCount];
diff -up qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qt_x11_p.h.QTBUG-21754 qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qt_x11_p.h
--- qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qt_x11_p.h.QTBUG-21754 2011-09-12 01:49:28.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.4/src/gui/kernel/qt_x11_p.h 2011-10-28 16:04:53.839638771 -0500
@@ -54,6 +54,7 @@
//
#include "QtGui/qwindowdefs.h"
+#include "QtCore/qhash.h"
#include "QtCore/qlist.h"
#include "QtCore/qvariant.h"
@@ -467,6 +468,7 @@ struct QX11Data
Colormap *argbColormaps;
int screenCount;
int defaultScreen;
+ QHash<int, int> bppForDepth;
Time time;
Time userTime;
diff -up qt-everywhere-opensource-src-4.7.4/src/gui/painting/qwindowsurface_raster.cpp.QTBUG-21754 qt-everywhere-opensource-src-4.7.4/src/gui/painting/qwindowsurface_raster.cpp
--- qt-everywhere-opensource-src-4.7.4/src/gui/painting/qwindowsurface_raster.cpp.QTBUG-21754 2011-09-12 01:49:28.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.4/src/gui/painting/qwindowsurface_raster.cpp 2011-10-28 16:11:47.145681289 -0500
@@ -224,9 +224,10 @@ void QRasterWindowSurface::flush(QWidget
} else
#endif
{
+ int depth = widget->x11Info().depth();
const QImage &src = d->image->image;
br = br.intersected(src.rect());
- if (src.format() != QImage::Format_RGB32 || widget->x11Info().depth() < 24) {
+ if (src.format() != QImage::Format_RGB32 || depth < 24 || X11->bppForDepth.value(depth) != 32) {
Q_ASSERT(src.depth() >= 16);
const QImage sub_src(src.scanLine(br.y()) + br.x() * (uint(src.depth()) / 8),
br.width(), br.height(), src.bytesPerLine(), src.format());
@@ -238,7 +239,7 @@ void QRasterWindowSurface::flush(QWidget
} else {
// qpaintengine_x11.cpp
extern void qt_x11_drawImage(const QRect &rect, const QPoint &pos, const QImage &image, Drawable hd, GC gc, Display *dpy, Visual *visual, int depth);
- qt_x11_drawImage(br, wbr.topLeft(), src, widget->handle(), d_ptr->gc, X11->display, (Visual *)widget->x11Info().visual(), widget->x11Info().depth());
+ qt_x11_drawImage(br, wbr.topLeft(), src, widget->handle(), d_ptr->gc, X11->display, (Visual *)widget->x11Info().visual(), depth);
}
}

View File

@ -0,0 +1,10 @@
diff -up qt-everywhere-opensource-src-4.7.4/src/declarative/qml/qml.pri.qml_no_strict_aliasing qt-everywhere-opensource-src-4.7.4/src/declarative/qml/qml.pri
--- qt-everywhere-opensource-src-4.7.4/src/declarative/qml/qml.pri.qml_no_strict_aliasing 2011-09-12 01:49:29.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.4/src/declarative/qml/qml.pri 2011-11-03 13:04:50.377884962 -0500
@@ -1,3 +1,6 @@
+
+*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
+
INCLUDEPATH += $$PWD
SOURCES += \
$$PWD/qdeclarativeparser.cpp \

View File

@ -0,0 +1,12 @@
diff -up qt-everywhere-opensource-src-4.7.4/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing qt-everywhere-opensource-src-4.7.4/src/sql/drivers/tds/qsql_tds.pri
--- qt-everywhere-opensource-src-4.7.4/src/sql/drivers/tds/qsql_tds.pri.tds_no_strict_aliasing 2011-09-12 01:49:28.000000000 -0500
+++ qt-everywhere-opensource-src-4.7.4/src/sql/drivers/tds/qsql_tds.pri 2011-11-03 13:04:34.271086323 -0500
@@ -1,6 +1,8 @@
HEADERS += $$PWD/qsql_tds.h
SOURCES += $$PWD/qsql_tds.cpp
+*-g++*: QMAKE_CXXFLAGS += -fno-strict-aliasing
+
unix|win32-g++*: {
LIBS *= $$QT_LFLAGS_TDS
!contains(LIBS, .*sybdb.*):LIBS += -lsybdb

View File

@ -0,0 +1,11 @@
diff -up qt-everywhere-opensource-src-4.8.0/src/gui/painting/qpdf.cpp.QTBUG-14724 qt-everywhere-opensource-src-4.8.0/src/gui/painting/qpdf.cpp
--- qt-everywhere-opensource-src-4.8.0/src/gui/painting/qpdf.cpp.QTBUG-14724 2011-10-03 22:44:31.000000000 -0500
+++ qt-everywhere-opensource-src-4.8.0/src/gui/painting/qpdf.cpp 2011-10-17 10:55:49.713265396 -0500
@@ -1686,6 +1686,7 @@ bool QPdfBaseEnginePrivate::openPrintDev
cupsTempFile = ret.second;
outDevice = new QFile();
static_cast<QFile *>(outDevice)->open(ret.first, QIODevice::WriteOnly);
+ fd = ret.first;
#endif
#ifndef QT_NO_LPR
} else {

163
qt.spec
View File

@ -17,8 +17,8 @@
Summary: Qt toolkit
Name: qt
Epoch: 1
Version: 4.7.3
Release: 3%{?dist}
Version: 4.7.4
Release: 7%{?dist}
# See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and ASL 2.0 and BSD and FTL and MIT
@ -82,26 +82,33 @@ Patch60: qt-4.6.3-bn-rendering-bz562058.patch
Patch61: qt-4.6.3-indic-rendering-bz631732.patch
Patch62: qt-4.6.3-indic-rendering-bz636399.patch
# fix 24bit color issue
Patch63: qt-everywhere-opensource-src-4.7.0-bpp24.patch
# Fails to create debug build of Qt projects on mingw (rhbz#653674)
Patch64: qt-everywhere-opensource-src-4.7.1-QTBUG-14467.patch
# fix QTreeView crash triggered by KPackageKit (patch by David Faure)
Patch65: qt-everywhere-opensource-src-4.7.1-qtreeview-kpackagekit-crash.patch
# Qt doesn't close orphaned file descriptors after printing (#746601, QTBUG-14724)
Patch70: qt-everywhere-opensource-src-4.8.0-QTBUG-14724.patch
# workaround aliasing issues in declarative/qml (#748936, QTBUG-19736)
Patch73: qt-everywhere-opensource-src-4.7.4-qml_no_strict_aliasing.patch
# workaround
# sql/drivers/tds/qsql_tds.cpp:341:49: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
Patch74: qt-everywhere-opensource-src-4.7.4-tds_no_strict_aliasing.patch
# upstream patches
# Applications crash when using a visual with 24 bits per pixel
# https://bugreports.qt.nokia.com/browse/QTBUG-21754
Patch100: qt-everywhere-opensource-src-4.7.4-QTBUG-21754.patch
# adds debug support to webkit/JavaScriptCore
# UPSTREAM ME
Patch105: qt-everywhere-opensource-src-4.7.1-webkit_debug_javascriptcore.patch
# Fix QNetworkConfigurationManager crash due to null private pointer. (QTBUG-17305, rhbz#682656)
Patch106: http://qt.gitorious.org/qt/qt/commit/4d3b9aa83cf7f6d9f9b88d9936e5980629daac2a.patch
# bz#705348, per-font autohint fontconfig directives globally disable the bytecode interpreter
Patch107: QTBUG-19947-fontconfig-2.patch
Patch108: QTBUG-16402-fix-ARM-Thumb2-build.patch
# kde-qt git patches
Patch202: 0002-This-patch-makes-override-redirect-windows-popup-men.patch
Patch205: 0005-When-tabs-are-inserted-or-removed-in-a-QTabBar.patch
Patch212: 0012-Add-context-to-tr-calls-in-QShortcut.patch
# security patches
Patch300: qt-everywhere-opensource-src-4.7.0-CVE-2010-1822-crash-svg-image.patch
@ -131,6 +138,7 @@ Source31: hi48-app-qt4-logo.png
## optional plugin bits
# set to -no-sql-<driver> to disable
# set to -qt-sql-<driver> to enable *in* qt library
%define ibase -plugin-sql-ibase
%define mysql -plugin-sql-mysql
%define odbc -plugin-sql-odbc
%define psql -plugin-sql-psql
@ -141,12 +149,6 @@ Source31: hi48-app-qt4-logo.png
%define tds -plugin-sql-tds
%define phonon -phonon
%define phonon_backend -phonon-backend
%if 0%{?rhel}
# if building with -phonon, define to internal version (ie, Obsolete external phonon)
%define phonon_internal 1
# if -phonon-backend, include in packaging (else it's omitted)
%define phonon_backend_packaged 1
%endif
%define phonon_version 4.3.80
%define phonon_version_major 4.3
%define phonon_release 1
@ -193,6 +195,7 @@ BuildRequires: libjpeg-devel
BuildRequires: libmng-devel
BuildRequires: libpng-devel
BuildRequires: libtiff-devel
BuildRequires: libXtst-devel
BuildRequires: NetworkManager-devel
BuildRequires: openssl-devel
BuildRequires: pkgconfig
@ -206,6 +209,10 @@ BuildRequires: zlib-devel
%define x_deps libICE-devel libSM-devel libXcursor-devel libXext-devel libXfixes-devel libXft-devel libXi-devel libXinerama-devel libXrandr-devel libXrender-devel libXt-devel libXv-devel libX11-devel xorg-x11-proto-devel libGL-devel libGLU-devel
BuildRequires: %{x_deps}
%if "%{?ibase}" != "-no-sql-ibase"
BuildRequires: firebird-devel
%endif
%if "%{?mysql}" != "-no-sql-mysql"
BuildRequires: mysql-devel >= 4.0
%endif
@ -365,6 +372,25 @@ Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
%description examples
%{summary}.
%package qvfb
Summary: Virtual frame buffer for Qt for Embedded Linux
Group: Applications/Emulators
Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
%description qvfb
%{summary}.
%package ibase
Summary: IBase driver for Qt's SQL classes
Group: System Environment/Libraries
Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: qt4-ibase = %{version}-%{release}
%{?_isa:Provides: qt4-ibase%{?_isa} = %{version}-%{release}}
%description ibase
%{summary}.
%package mysql
Summary: MySQL driver for Qt's SQL classes
@ -437,7 +463,8 @@ Group: System Environment/Libraries
Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: qt4-webkit = %{version}-%{release}
Provides: qt4-webkit%{?_isa} = %{version}-%{release}
#Provides: QtWebKit = 1.0.0-1
Provides: qtwebkit = 2.0-1
Provides: qtwebkit%{?_isa} = 2.0-1
Obsoletes: WebKit-qt < 1.0.0-1
Provides: WebKit-qt = 1.0.0-1
%description webkit
@ -453,7 +480,8 @@ Requires: %{name}-webkit%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Requires: %{name}-devel%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: qt4-webkit-devel = %{version}-%{release}
Provides: qt4-webkit-devel%{?_isa} = %{version}-%{release}
#Provides: QtWebKit-devel = 1.0.0-1
Provides: qtwebkit-devel = 2.0-1
Provides: qtwebkit-devel%{?_isa} = 2.0-1
Obsoletes: WebKit-qt < 1.0.0-1
Provides: WebKit-qt = 1.0.0-1
%description webkit-devel
@ -507,19 +535,23 @@ Qt libraries used for drawing widgets and OpenGL items.
%patch60 -p1 -b .bn-rendering-bz562058
%patch61 -p1 -b .indic-rendering-bz631732
%patch62 -p1 -b .indic-rendering-bz636399
%patch63 -p1 -b .bpp24
%patch64 -p1 -b .QTBUG-14467
%patch65 -p1 -b .qtreeview-kpackagekit-crash
%patch70 -p1 -b .QTBUG-14724
%patch73 -p1 -b .qml_no_strict_aliasing
%patch74 -p1 -b .tds_no_strict_aliasing
# upstream patches
## upstream patches
%patch100 -p1 -b .QTBUG-21754
%patch105 -p1 -b .webkit_debug_javascriptcore
%patch106 -p1 -b .QNetworkConfigurationManager-null-pointer
%patch107 -p1 -b .QTBUG-19947-fontconfig-2
# Merged in 4.8.
%patch108 -p1 -b .QTBUG-16402-fix-ARM-Thumb2-build
# kde-qt branch
%if 0%{?kde_qt}
%patch202 -p1 -b .kde-qt-0002
%patch205 -p1 -b .kde-qt-0005
%patch212 -p1 -b .kde-qt-0012
%endif
# security fixes
@ -554,10 +586,6 @@ sed -i \
sed -e "s|^QMAKE_CFLAGS_RELEASE|#QMAKE_CFLAGS_RELEASE|g" \
mkspecs/common/g++.conf > mkspecs/common/g++-multilib.conf
%if "%{_qt4_libdir}" == "%{_libdir}"
sed -i -e "s|^QMAKE_LIBDIR_QT.*=.*|QMAKE_LIBDIR_QT =|" mkspecs/common/linux.conf
%endif
# undefine QMAKE_STRIP, so we get useful -debuginfo pkgs
sed -i -e "s|^QMAKE_STRIP.*=.*|QMAKE_STRIP =|" mkspecs/common/linux.conf
@ -578,6 +606,20 @@ done
# add '-importdir %{_qt4_importdir}' when it works, right now fails with:
# %{_qt4_importdir} unknown argument
# This should go away if/when qt supports ARMv7
if [ -d src/corelib/arch/armv7/ -o -f src/corelib/arch/qatomic_armv7.h ]; then
echo "ERROR: This version of qt supports ARMv7. Please remove -arch armv6 override from spec file"
exit 1
fi
%ifarch armv7hl armv7hnl
%define qt_arch -arch armv6
%endif
# Force explicit neon mode instead of auto detection
%ifarch armv7hl
%define qt_neon -no-neon
%endif
# build shared, threaded (default) libraries
./configure -v \
-confirm-license \
@ -605,6 +647,8 @@ done
-no-rpath \
-reduce-relocations \
-no-separate-debug-info \
%{?qt_arch} \
%{?qt_neon} \
%{?phonon} %{!?phonon:-no-phonon} \
%{?phonon_backend} \
%{?no_pch} \
@ -629,6 +673,7 @@ done
-xmlpatterns \
%{?dbus} %{!?dbus:-no-dbus} \
%{?webkit} %{!?webkit:-no-webkit } \
%{?ibase} \
%{?mysql} \
%{?psql} \
%{?odbc} \
@ -640,6 +685,9 @@ done
make %{?_smp_mflags}
# TODO: consider patching tools/tools.pro to enable building this by default
make %{?_smp_mflags} -C tools/qvfb
# recreate .qm files
LD_LIBRARY_PATH=`pwd`/lib bin/lrelease translations/*.ts
@ -649,6 +697,8 @@ rm -rf %{buildroot}
make install INSTALL_ROOT=%{buildroot}
make install INSTALL_ROOT=%{buildroot} -C tools/qvfb
%if 0%{?private}
# install private headers
# using rsync -R as easy way to preserve relative path names
@ -869,14 +919,12 @@ rm -fv %{buildroot}%{_qt4_plugindir}/designer/libqwebview.so
rm -fv %{buildroot}%{_libdir}/pkgconfig/QtWebKit.pc
%endif
# remove qvfb translations, we don't ship qvfb
rm -fv %{buildroot}%{_qt4_translationdir}/qvfb_*.qm
%find_lang qt --with-qt --without-mo
%find_lang assistant --with-qt --without-mo
%find_lang qt_help --with-qt --without-mo
%find_lang qtconfig --with-qt --without-mo
%find_lang qvfb --with-qt --without-mo
cat assistant.lang qt_help.lang qtconfig.lang >qt-x11.lang
%find_lang designer --with-qt --without-mo
@ -1155,6 +1203,17 @@ fi
%{_qt4_examplesdir}/
%endif
%files qvfb -f qvfb.lang
%defattr(-,root,root,-)
%{_bindir}/qvfb
%{_qt4_bindir}/qvfb
%if "%{?ibase}" == "-plugin-sql-ibase"
%files ibase
%defattr(-,root,root,-)
%{_qt4_plugindir}/sqldrivers/libqsqlibase*
%endif
%if "%{?mysql}" == "-plugin-sql-mysql"
%files mysql
%defattr(-,root,root,-)
@ -1242,6 +1301,50 @@ fi
%changelog
* Wed Nov 16 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.4-7
- drop kde-qt 0012 patch, it's broken if not upstream (#704882)
* Thu Nov 03 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.4-6
- build declarative/qml with -fno-strict-aliasing (#748936, QTBUG-19736)
- build tds sql driver with -fno-strict-aliasing
* Fri Oct 28 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.4-5
- crash when using a visual with 24 bits per pixel (QTBUG-21754)
* Mon Oct 17 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.4-4
- Qt doesn't close orphaned file descriptors after printing (#746601, QTBUG-14724)
- -webkit: Provides: qtwebkit(-devel)
* Fri Sep 16 2011 Henrik Nordstrom <henrik@henriknordstrom.net> - 1:4.7.4-3
- Set proper architecture flags for armv7hl and admv7hnl (#744701)
- fix ARM Thumb2 build (QTBUG-16402)
* Fri Sep 16 2011 Lukas Tinkl <ltinkl@redhat.com> - 1:4.7.4-2
- respun upstream tarball to fix offline HTML docu
(https://bugreports.qt.nokia.com/browse/QTBUG-21454)
* Thu Sep 01 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.4-1
- 4.7.4
* Sat Aug 27 2011 Than Ngo <than@redhat.com> - 1:4.7.3-9
- drop unused rhel conditional
* Sat Jul 23 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.3-8
- fix QMAKE_LIBDIR_QT, for missing QT_SHARED define (#725183)
* Thu Jul 07 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.3-7
- Adding qt-sql-ibase driver for qt (#719002)
- qvfb subpackage (#718416)
* Mon Jun 20 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.3-6
- fontconfig patch respin (#705348, QTBUG-19947)
* Mon Jun 20 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.3-5
- updated fontconfig patch (#705348, QTBUG-19947)
* Tue Jun 07 2011 Than Ngo <than@redhat.com> - 1:4.7.3-4
- bz#705348, Lohit fonts accidentally disable the bytecode interpreter for Qt
* Thu May 19 2011 Rex Dieter <rdieter@fedoraproject.org> 1:4.7.3-3
- omit %%{_qt4_plugindir}/designer/libqwebview.so too

View File

@ -7,4 +7,4 @@ d9f511e4b51983b4e10eb58b320416d5 hi128-app-qt4-logo.png
12db12c009b722a6dc141f78feb7e330 hi32-phonon-gstreamer.png
86c34a1b81d44980b1381f94ed6b7a23 hi48-phonon-gstreamer.png
153505c71ec021b0a3bd4b74f2492e93 hi64-phonon-gstreamer.png
49b96eefb1224cc529af6fe5608654fe qt-everywhere-opensource-src-4.7.3.tar.gz
9831cf1dfa8d0689a06c2c54c5c65aaf qt-everywhere-opensource-src-4.7.4.tar.gz