forked from pool/libqt5-qtbase
Accepting request 247845 from KDE:Qt5
- Update to 5.3.2~git20140904 (r05670f5): * Tip of the bugfix 5.3.2 branch Please copy to 13.2 if possible, as can be seen from the changelog, it contains many useful bugfixes. The 'snapshot' is artificial, as the probably won't be any commits between now and 5.3.2, but release is waiting on some bureaucratic procedures. Thanks! OBS-URL: https://build.opensuse.org/request/show/247845 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=26
This commit is contained in:
parent
5520ffd023
commit
be03ea6fc1
@ -1,50 +0,0 @@
|
||||
From 075c36e39beedb33ec4b239d57075f54acb21acf Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <mgraesslin@kde.org>
|
||||
Date: Mon, 16 Jun 2014 14:20:05 +0200
|
||||
Subject: [PATCH 1/1] Do not overwrite existing event mask of root window
|
||||
|
||||
QXcbScreen installs its own event mask on the screen's root window.
|
||||
This overwrites any existing event mask already set and by that
|
||||
breaks applications when a new screen is added.
|
||||
|
||||
By first fetching the existing event mask and adding it to the newly
|
||||
installed event mask, Qt does no longer break applications also
|
||||
installing an event mask on the root window.
|
||||
|
||||
Task-number: QTBUG-39648
|
||||
Change-Id: I8686dd6ae49d0e807c6fe1ea4a231ff728bfcf25
|
||||
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
||||
Reviewed-by: Uli Schlachter <psychon@znc.in>
|
||||
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbscreen.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp
|
||||
index 9f19841..01e7846 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
|
||||
@@ -106,6 +106,11 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, xcb_screen_t *scr,
|
||||
qDebug(" root ID........: %x", screen()->root);
|
||||
#endif
|
||||
|
||||
+ QScopedPointer<xcb_get_window_attributes_reply_t, QScopedPointerPodDeleter> rootAttribs(
|
||||
+ xcb_get_window_attributes_reply(xcb_connection(),
|
||||
+ xcb_get_window_attributes_unchecked(xcb_connection(), screen()->root), NULL));
|
||||
+ const quint32 existingEventMask = rootAttribs.isNull() ? 0 : rootAttribs->your_event_mask;
|
||||
+
|
||||
const quint32 mask = XCB_CW_EVENT_MASK;
|
||||
const quint32 values[] = {
|
||||
// XCB_CW_EVENT_MASK
|
||||
@@ -113,6 +118,7 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, xcb_screen_t *scr,
|
||||
| XCB_EVENT_MASK_LEAVE_WINDOW
|
||||
| XCB_EVENT_MASK_PROPERTY_CHANGE
|
||||
| XCB_EVENT_MASK_STRUCTURE_NOTIFY // for the "MANAGER" atom (system tray notification).
|
||||
+ | existingEventMask // don't overwrite the event mask on the root window
|
||||
};
|
||||
|
||||
xcb_change_window_attributes(xcb_connection(), screen()->root, mask, values);
|
||||
--
|
||||
1.9.3
|
||||
|
@ -1,120 +0,0 @@
|
||||
From 473ed1c1aa67ceb345b20d13c408ed8bd65a9e41 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <mgraesslin@kde.org>
|
||||
Date: Wed, 18 Jun 2014 13:03:15 +0200
|
||||
Subject: [PATCH 1/1] Properly check which OpenGL features are supported
|
||||
|
||||
QOpenGLShaderProgram::hasOpenGLShaderPrograms tests whether
|
||||
QOpenGLFunctions::Shaders is provided for the given context. As the
|
||||
initialization code assumed OpenGL 2 this always was true. But
|
||||
unfortunately we still cannot assume that OpenGL 2 is universally
|
||||
supported. E.g. indirect rendering (no matter how bad that idea is)
|
||||
does not support OpenGL 2 on all hardware and the Shader related
|
||||
extensions are not available.
|
||||
|
||||
This change makes sure that only when OpenGL 2 is available the
|
||||
features provided by OpenGL 2 are enabled. If OpenGL 2 is not
|
||||
available the extensions are tested. The checks are slightly
|
||||
reordered to not do the extension tests at all if OpenGL 2 is
|
||||
available.
|
||||
|
||||
Task-number: QTBUG-39730
|
||||
Change-Id: Ic775163e0dcc519925b1287f3c4ca5e8ebf101d5
|
||||
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
||||
---
|
||||
src/gui/opengl/qopenglfunctions.cpp | 78 +++++++++++++++++++------------------
|
||||
1 file changed, 40 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp
|
||||
index a0d1775..bc4a714 100644
|
||||
--- a/src/gui/opengl/qopenglfunctions.cpp
|
||||
+++ b/src/gui/opengl/qopenglfunctions.cpp
|
||||
@@ -283,46 +283,48 @@ static int qt_gl_resolve_features()
|
||||
QSurfaceFormat format = QOpenGLContext::currentContext()->format();
|
||||
QOpenGLExtensionMatcher extensions;
|
||||
|
||||
- // Recognize features by extension name.
|
||||
- if (extensions.match("GL_ARB_multitexture"))
|
||||
- features |= QOpenGLFunctions::Multitexture;
|
||||
- if (extensions.match("GL_ARB_shader_objects"))
|
||||
- features |= QOpenGLFunctions::Shaders;
|
||||
- if (extensions.match("GL_EXT_framebuffer_object") ||
|
||||
- extensions.match("GL_ARB_framebuffer_object"))
|
||||
- features |= QOpenGLFunctions::Framebuffers;
|
||||
- if (extensions.match("GL_EXT_blend_color"))
|
||||
- features |= QOpenGLFunctions::BlendColor;
|
||||
- if (extensions.match("GL_EXT_blend_equation_separate"))
|
||||
- features |= QOpenGLFunctions::BlendEquationSeparate;
|
||||
- if (extensions.match("GL_EXT_blend_func_separate"))
|
||||
- features |= QOpenGLFunctions::BlendFuncSeparate;
|
||||
- if (extensions.match("GL_EXT_blend_subtract"))
|
||||
- features |= QOpenGLFunctions::BlendSubtract;
|
||||
- if (extensions.match("GL_ARB_texture_compression"))
|
||||
- features |= QOpenGLFunctions::CompressedTextures;
|
||||
- if (extensions.match("GL_ARB_multisample"))
|
||||
- features |= QOpenGLFunctions::Multisample;
|
||||
- if (extensions.match("GL_ARB_texture_non_power_of_two"))
|
||||
- features |= QOpenGLFunctions::NPOTTextures |
|
||||
- QOpenGLFunctions::NPOTTextureRepeat;
|
||||
-
|
||||
- // assume version 2.0 or higher
|
||||
- features |= QOpenGLFunctions::BlendColor |
|
||||
- QOpenGLFunctions::BlendEquation |
|
||||
- QOpenGLFunctions::Multitexture |
|
||||
- QOpenGLFunctions::CompressedTextures |
|
||||
- QOpenGLFunctions::Multisample |
|
||||
- QOpenGLFunctions::BlendFuncSeparate |
|
||||
- QOpenGLFunctions::Buffers |
|
||||
- QOpenGLFunctions::Shaders |
|
||||
- QOpenGLFunctions::StencilSeparate |
|
||||
- QOpenGLFunctions::BlendEquationSeparate |
|
||||
- QOpenGLFunctions::NPOTTextures |
|
||||
- QOpenGLFunctions::NPOTTextureRepeat;
|
||||
-
|
||||
if (format.majorVersion() >= 3)
|
||||
features |= QOpenGLFunctions::Framebuffers;
|
||||
+ else if (extensions.match("GL_EXT_framebuffer_object") ||
|
||||
+ extensions.match("GL_ARB_framebuffer_object"))
|
||||
+ features |= QOpenGLFunctions::Framebuffers;
|
||||
+
|
||||
+ if (format.majorVersion() >= 2) {
|
||||
+ features |= QOpenGLFunctions::BlendColor |
|
||||
+ QOpenGLFunctions::BlendEquation |
|
||||
+ QOpenGLFunctions::BlendSubtract |
|
||||
+ QOpenGLFunctions::Multitexture |
|
||||
+ QOpenGLFunctions::CompressedTextures |
|
||||
+ QOpenGLFunctions::Multisample |
|
||||
+ QOpenGLFunctions::BlendFuncSeparate |
|
||||
+ QOpenGLFunctions::Buffers |
|
||||
+ QOpenGLFunctions::Shaders |
|
||||
+ QOpenGLFunctions::StencilSeparate |
|
||||
+ QOpenGLFunctions::BlendEquationSeparate |
|
||||
+ QOpenGLFunctions::NPOTTextures |
|
||||
+ QOpenGLFunctions::NPOTTextureRepeat;
|
||||
+ } else {
|
||||
+ // Recognize features by extension name.
|
||||
+ if (extensions.match("GL_ARB_multitexture"))
|
||||
+ features |= QOpenGLFunctions::Multitexture;
|
||||
+ if (extensions.match("GL_ARB_shader_objects"))
|
||||
+ features |= QOpenGLFunctions::Shaders;
|
||||
+ if (extensions.match("GL_EXT_blend_color"))
|
||||
+ features |= QOpenGLFunctions::BlendColor;
|
||||
+ if (extensions.match("GL_EXT_blend_equation_separate"))
|
||||
+ features |= QOpenGLFunctions::BlendEquationSeparate;
|
||||
+ if (extensions.match("GL_EXT_blend_subtract"))
|
||||
+ features |= QOpenGLFunctions::BlendSubtract;
|
||||
+ if (extensions.match("GL_EXT_blend_func_separate"))
|
||||
+ features |= QOpenGLFunctions::BlendFuncSeparate;
|
||||
+ if (extensions.match("GL_ARB_texture_compression"))
|
||||
+ features |= QOpenGLFunctions::CompressedTextures;
|
||||
+ if (extensions.match("GL_ARB_multisample"))
|
||||
+ features |= QOpenGLFunctions::Multisample;
|
||||
+ if (extensions.match("GL_ARB_texture_non_power_of_two"))
|
||||
+ features |= QOpenGLFunctions::NPOTTextures |
|
||||
+ QOpenGLFunctions::NPOTTextureRepeat;
|
||||
+ }
|
||||
|
||||
const QPair<int, int> version = format.version();
|
||||
if (version < qMakePair(3, 0)
|
||||
--
|
||||
1.9.3
|
||||
|
@ -1,236 +0,0 @@
|
||||
From 884b38157689a893ace0a4c793fab921167abb2c Mon Sep 17 00:00:00 2001
|
||||
From: David Faure <david.faure@kdab.com>
|
||||
Date: Sun, 8 Jun 2014 21:46:24 +0200
|
||||
Subject: [PATCH 1/1] Fix data race on QLoggingCategory when using qDebug from
|
||||
multiple threads
|
||||
|
||||
setEnabled() would race with isEnabled()/isDebugEnabled()/etc.
|
||||
|
||||
Change-Id: I2004cba81d5417a634b97f5c2f98d3a4ab71770d
|
||||
Reviewed-by: David Faure <david.faure@kdab.com>
|
||||
---
|
||||
src/corelib/arch/qatomic_bootstrap.h | 4 ++-
|
||||
src/corelib/io/qloggingcategory.cpp | 36 ++++++++++++++++++--------
|
||||
src/corelib/io/qloggingcategory.h | 35 +++++++++++++++++++------
|
||||
tests/auto/corelib/io/qdebug/qdebug.pro | 2 +-
|
||||
tests/auto/corelib/io/qdebug/tst_qdebug.cpp | 40 +++++++++++++++++++++++++++++
|
||||
5 files changed, 97 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/src/corelib/arch/qatomic_bootstrap.h b/src/corelib/arch/qatomic_bootstrap.h
|
||||
index 7f17387..0d6843a 100644
|
||||
--- a/src/corelib/arch/qatomic_bootstrap.h
|
||||
+++ b/src/corelib/arch/qatomic_bootstrap.h
|
||||
@@ -67,8 +67,10 @@ template <typename T> struct QAtomicOps: QGenericAtomicOps<QAtomicOps<T> >
|
||||
return --_q_value != 0;
|
||||
}
|
||||
|
||||
- static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW
|
||||
+ static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW
|
||||
{
|
||||
+ if (currentValue)
|
||||
+ *currentValue = _q_value;
|
||||
if (_q_value == expectedValue) {
|
||||
_q_value = newValue;
|
||||
return true;
|
||||
diff --git a/src/corelib/io/qloggingcategory.cpp b/src/corelib/io/qloggingcategory.cpp
|
||||
index 518052e..45fab11 100644
|
||||
--- a/src/corelib/io/qloggingcategory.cpp
|
||||
+++ b/src/corelib/io/qloggingcategory.cpp
|
||||
@@ -50,6 +50,18 @@ const char qtDefaultCategoryName[] = "default";
|
||||
Q_GLOBAL_STATIC_WITH_ARGS(QLoggingCategory, qtDefaultCategory,
|
||||
(qtDefaultCategoryName))
|
||||
|
||||
+#ifndef Q_ATOMIC_INT8_IS_SUPPORTED
|
||||
+static void setBoolLane(QBasicAtomicInt *atomic, bool enable, int shift)
|
||||
+{
|
||||
+ const int bit = 1 << shift;
|
||||
+
|
||||
+ if (enable)
|
||||
+ atomic->fetchAndOrRelaxed(bit);
|
||||
+ else
|
||||
+ atomic->fetchAndAndRelaxed(~bit);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/*!
|
||||
\class QLoggingCategory
|
||||
\inmodule QtCore
|
||||
@@ -171,13 +183,11 @@ Q_GLOBAL_STATIC_WITH_ARGS(QLoggingCategory, qtDefaultCategory,
|
||||
*/
|
||||
QLoggingCategory::QLoggingCategory(const char *category)
|
||||
: d(0),
|
||||
- name(0),
|
||||
- enabledDebug(true),
|
||||
- enabledWarning(true),
|
||||
- enabledCritical(true)
|
||||
+ name(0)
|
||||
{
|
||||
Q_UNUSED(d);
|
||||
Q_UNUSED(placeholder);
|
||||
+ enabled.store(0x01010101); // enabledDebug = enabledWarning = enabledCritical = true;
|
||||
|
||||
const bool isDefaultCategory
|
||||
= (category == 0) || (strcmp(category, qtDefaultCategoryName) == 0);
|
||||
@@ -249,9 +259,9 @@ QLoggingCategory::~QLoggingCategory()
|
||||
bool QLoggingCategory::isEnabled(QtMsgType msgtype) const
|
||||
{
|
||||
switch (msgtype) {
|
||||
- case QtDebugMsg: return enabledDebug;
|
||||
- case QtWarningMsg: return enabledWarning;
|
||||
- case QtCriticalMsg: return enabledCritical;
|
||||
+ case QtDebugMsg: return isDebugEnabled();
|
||||
+ case QtWarningMsg: return isWarningEnabled();
|
||||
+ case QtCriticalMsg: return isCriticalEnabled();
|
||||
case QtFatalMsg: return true;
|
||||
}
|
||||
return false;
|
||||
@@ -270,9 +280,15 @@ bool QLoggingCategory::isEnabled(QtMsgType msgtype) const
|
||||
void QLoggingCategory::setEnabled(QtMsgType type, bool enable)
|
||||
{
|
||||
switch (type) {
|
||||
- case QtDebugMsg: enabledDebug = enable; break;
|
||||
- case QtWarningMsg: enabledWarning = enable; break;
|
||||
- case QtCriticalMsg: enabledCritical = enable; break;
|
||||
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
|
||||
+ case QtDebugMsg: bools.enabledDebug.store(enable); break;
|
||||
+ case QtWarningMsg: bools.enabledWarning.store(enable); break;
|
||||
+ case QtCriticalMsg: bools.enabledCritical.store(enable); break;
|
||||
+#else
|
||||
+ case QtDebugMsg: setBoolLane(&enabled, enable, DebugShift); break;
|
||||
+ case QtWarningMsg: setBoolLane(&enabled, enable, WarningShift); break;
|
||||
+ case QtCriticalMsg: setBoolLane(&enabled, enable, CriticalShift); break;
|
||||
+#endif
|
||||
case QtFatalMsg: break;
|
||||
}
|
||||
}
|
||||
diff --git a/src/corelib/io/qloggingcategory.h b/src/corelib/io/qloggingcategory.h
|
||||
index 4aec8e6..573af21 100644
|
||||
--- a/src/corelib/io/qloggingcategory.h
|
||||
+++ b/src/corelib/io/qloggingcategory.h
|
||||
@@ -57,10 +57,15 @@ public:
|
||||
bool isEnabled(QtMsgType type) const;
|
||||
void setEnabled(QtMsgType type, bool enable);
|
||||
|
||||
- bool isDebugEnabled() const { return enabledDebug; }
|
||||
- bool isWarningEnabled() const { return enabledWarning; }
|
||||
- bool isCriticalEnabled() const { return enabledCritical; }
|
||||
-
|
||||
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
|
||||
+ bool isDebugEnabled() const { return bools.enabledDebug.load(); }
|
||||
+ bool isWarningEnabled() const { return bools.enabledWarning.load(); }
|
||||
+ bool isCriticalEnabled() const { return bools.enabledCritical.load(); }
|
||||
+#else
|
||||
+ bool isDebugEnabled() const { return enabled.load() >> DebugShift & 1; }
|
||||
+ bool isWarningEnabled() const { return enabled.load() >> WarningShift & 1; }
|
||||
+ bool isCriticalEnabled() const { return enabled.load() >> CriticalShift & 1; }
|
||||
+#endif
|
||||
const char *categoryName() const { return name; }
|
||||
|
||||
// allows usage of both factory method and variable in qCX macros
|
||||
@@ -78,10 +83,24 @@ private:
|
||||
void *d; // reserved for future use
|
||||
const char *name;
|
||||
|
||||
- bool enabledDebug;
|
||||
- bool enabledWarning;
|
||||
- bool enabledCritical;
|
||||
- bool placeholder[5]; // reserve for future use
|
||||
+#ifdef Q_BIG_ENDIAN
|
||||
+ enum { DebugShift = 0, WarningShift = 8, CriticalShift = 16 };
|
||||
+#else
|
||||
+ enum { DebugShift = 24, WarningShift = 16, CriticalShift = 8 };
|
||||
+#endif
|
||||
+
|
||||
+ struct AtomicBools {
|
||||
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
|
||||
+ QBasicAtomicInteger<bool> enabledDebug;
|
||||
+ QBasicAtomicInteger<bool> enabledWarning;
|
||||
+ QBasicAtomicInteger<bool> enabledCritical;
|
||||
+#endif
|
||||
+ };
|
||||
+ union {
|
||||
+ AtomicBools bools;
|
||||
+ QBasicAtomicInt enabled;
|
||||
+ };
|
||||
+ bool placeholder[4]; // reserve for future use
|
||||
};
|
||||
|
||||
#define Q_DECLARE_LOGGING_CATEGORY(name) \
|
||||
diff --git a/tests/auto/corelib/io/qdebug/qdebug.pro b/tests/auto/corelib/io/qdebug/qdebug.pro
|
||||
index 820c17f..5e902bb 100644
|
||||
--- a/tests/auto/corelib/io/qdebug/qdebug.pro
|
||||
+++ b/tests/auto/corelib/io/qdebug/qdebug.pro
|
||||
@@ -1,5 +1,5 @@
|
||||
CONFIG += testcase parallel_test
|
||||
TARGET = tst_qdebug
|
||||
-QT = core testlib
|
||||
+QT = core testlib concurrent
|
||||
SOURCES = tst_qdebug.cpp
|
||||
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
|
||||
diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
|
||||
index 80144db..8fd830a 100644
|
||||
--- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
|
||||
+++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
|
||||
@@ -44,6 +44,9 @@
|
||||
#include <QtCore/QtDebug>
|
||||
#include <QtTest/QtTest>
|
||||
|
||||
+#include <QtConcurrentRun>
|
||||
+#include <QFutureSynchronizer>
|
||||
+
|
||||
class tst_QDebug: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -59,6 +62,7 @@ private slots:
|
||||
void qDebugQLatin1String() const;
|
||||
void textStreamModifiers() const;
|
||||
void defaultMessagehandler() const;
|
||||
+ void threadSafety() const;
|
||||
};
|
||||
|
||||
void tst_QDebug::assignment() const
|
||||
@@ -305,5 +309,41 @@ void tst_QDebug::defaultMessagehandler() const
|
||||
QVERIFY(same);
|
||||
}
|
||||
|
||||
+QMutex s_mutex;
|
||||
+QStringList s_messages;
|
||||
+QSemaphore s_sema;
|
||||
+
|
||||
+static void threadSafeMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
|
||||
+{
|
||||
+ QMutexLocker lock(&s_mutex);
|
||||
+ s_messages.append(msg);
|
||||
+ Q_UNUSED(type);
|
||||
+ Q_UNUSED(context);
|
||||
+}
|
||||
+
|
||||
+static void doDebug() // called in each thread
|
||||
+{
|
||||
+ s_sema.acquire();
|
||||
+ qDebug() << "doDebug";
|
||||
+}
|
||||
+
|
||||
+void tst_QDebug::threadSafety() const
|
||||
+{
|
||||
+ MessageHandlerSetter mhs(threadSafeMessageHandler);
|
||||
+ const int numThreads = 10;
|
||||
+ QThreadPool::globalInstance()->setMaxThreadCount(numThreads);
|
||||
+ QFutureSynchronizer<void> sync;
|
||||
+ for (int i = 0; i < numThreads; ++i) {
|
||||
+ sync.addFuture(QtConcurrent::run(&doDebug));
|
||||
+ }
|
||||
+ s_sema.release(numThreads);
|
||||
+ sync.waitForFinished();
|
||||
+ QMutexLocker lock(&s_mutex);
|
||||
+ QCOMPARE(s_messages.count(), numThreads);
|
||||
+ for (int i = 0; i < numThreads; ++i) {
|
||||
+ QCOMPARE(s_messages.at(i), QStringLiteral("doDebug"));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
QTEST_MAIN(tst_QDebug);
|
||||
#include "tst_qdebug.moc"
|
||||
--
|
||||
1.9.3
|
||||
|
@ -1,46 +0,0 @@
|
||||
From 7a4dcbaabf037a6913a5662ebb74cc47e04673b9 Mon Sep 17 00:00:00 2001
|
||||
From: David Faure <david.faure@kdab.com>
|
||||
Date: Sun, 8 Jun 2014 15:39:00 +0200
|
||||
Subject: [PATCH 1/1] QDBus: fix data race on isDebugging bool
|
||||
|
||||
Change-Id: Id0b8bf8dac570abfc6c8768bd4264650ae0c199b
|
||||
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
||||
---
|
||||
src/dbus/qdbusintegrator.cpp | 11 +++++------
|
||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
|
||||
index 1fef6d4..260c188 100644
|
||||
--- a/src/dbus/qdbusintegrator.cpp
|
||||
+++ b/src/dbus/qdbusintegrator.cpp
|
||||
@@ -73,8 +73,8 @@
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
-static bool isDebugging;
|
||||
-#define qDBusDebug if (!::isDebugging); else qDebug
|
||||
+static QBasicAtomicInt isDebugging = Q_BASIC_ATOMIC_INITIALIZER(-1);
|
||||
+#define qDBusDebug if (::isDebugging == 0); else qDebug
|
||||
|
||||
Q_GLOBAL_STATIC_WITH_ARGS(const QString, orgFreedesktopDBusString, (QLatin1String(DBUS_SERVICE_DBUS)))
|
||||
|
||||
@@ -1022,13 +1022,12 @@ QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
|
||||
anonymousAuthenticationAllowed(false)
|
||||
{
|
||||
static const bool threads = q_dbus_threads_init_default();
|
||||
- static const int debugging = qgetenv("QDBUS_DEBUG").toInt();
|
||||
- ::isDebugging = debugging;
|
||||
+ if (::isDebugging == -1)
|
||||
+ ::isDebugging = qgetenv("QDBUS_DEBUG").toInt();
|
||||
Q_UNUSED(threads)
|
||||
- Q_UNUSED(debugging)
|
||||
|
||||
#ifdef QDBUS_THREAD_DEBUG
|
||||
- if (debugging > 1)
|
||||
+ if (::isDebugging > 1)
|
||||
qdbusThreadDebug = qdbusDefaultThreadDebug;
|
||||
#endif
|
||||
|
||||
--
|
||||
1.9.3
|
||||
|
@ -1,44 +0,0 @@
|
||||
From 51d6df1d18322c630f79567ed22de3718436d78d Mon Sep 17 00:00:00 2001
|
||||
From: Gatis Paeglis <gatis.paeglis@digia.com>
|
||||
Date: Tue, 17 Jun 2014 11:41:23 +0200
|
||||
Subject: [PATCH 1/1] Translate Super/Hyper keys to MetaModifier
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This is how it was done in Qt4. If users are interested
|
||||
in an actual X11 keysym they can use QKeyEvent::nativeVirtualKey().
|
||||
|
||||
Change-Id: I710664e48c5db1633a357aa0a5d238f3453103ab
|
||||
Task-number: QTBUG-38428
|
||||
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
|
||||
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
||||
Reviewed-by: Sebastian Kügler <sebas@kde.org>
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbkeyboard.cpp | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
|
||||
index 69601f4..4c84b19 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
|
||||
@@ -929,6 +929,15 @@ int QXcbKeyboard::keysymToQtKey(xcb_keysym_t key) const
|
||||
i += 2;
|
||||
}
|
||||
|
||||
+ if (rmod_masks.meta) {
|
||||
+ // translate Super/Hyper keys to Meta if we're using them as the MetaModifier
|
||||
+ if (rmod_masks.meta == rmod_masks.super && (code == Qt::Key_Super_L || code == Qt::Key_Super_R)) {
|
||||
+ code = Qt::Key_Meta;
|
||||
+ } else if (rmod_masks.meta == rmod_masks.hyper && (code == Qt::Key_Hyper_L || code == Qt::Key_Hyper_R)) {
|
||||
+ code = Qt::Key_Meta;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return code;
|
||||
}
|
||||
|
||||
--
|
||||
1.9.3
|
||||
|
@ -1,33 +0,0 @@
|
||||
From f1bce3bc17ebb99b1512b07499988538465c78a2 Mon Sep 17 00:00:00 2001
|
||||
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
|
||||
Date: Thu, 21 Aug 2014 15:33:09 +0200
|
||||
Subject: [PATCH] Avoid crash if querying device that has gone away
|
||||
|
||||
A device removed very fast after being inserted might disappear while
|
||||
we are still seting it up. We must therefore check if we indeed still
|
||||
get a matching device
|
||||
|
||||
Task-number: QTBUG-40820
|
||||
Change-Id: I4372fb1932264e5799f37cea0d016795e28ebed6
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- qtbase-opensource-src-5.3.1.orig/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
+++ qtbase-opensource-src-5.3.1/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
@@ -328,10 +328,12 @@ XInput2DeviceData *QXcbConnection::devic
|
||||
{
|
||||
XInput2DeviceData *dev = m_touchDevices[id];
|
||||
if (!dev) {
|
||||
- int unused = 0;
|
||||
+ int nrDevices = 0;
|
||||
QTouchDevice::Capabilities caps = 0;
|
||||
dev = new XInput2DeviceData;
|
||||
- dev->xiDeviceInfo = XIQueryDevice(static_cast<Display *>(m_xlib_display), id, &unused);
|
||||
+ dev->xiDeviceInfo = XIQueryDevice(static_cast<Display *>(m_xlib_display), id, &nrDevices);
|
||||
+ if (nrDevices <= 0)
|
||||
+ return 0;
|
||||
int type = -1;
|
||||
int maxTouchPoints = 1;
|
||||
bool hasRelativeCoords = false;
|
@ -1,39 +0,0 @@
|
||||
From e98c461d43ea07c73898c93debe9285029ba0416 Mon Sep 17 00:00:00 2001
|
||||
From: Joni Poikelin <joni.poikelin@digia.com>
|
||||
Date: Thu, 12 Jun 2014 10:28:23 +0300
|
||||
Subject: [PATCH] XCB: Fix leak with touch devices
|
||||
|
||||
Task-number: QTBUG-39596
|
||||
Change-Id: I4225d5a1ab4939280640b35d30c283f056a56519
|
||||
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
index c296618..a574dca 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
@@ -228,6 +228,11 @@ void QXcbConnection::xi2SetupDevices()
|
||||
|
||||
void QXcbConnection::finalizeXInput2()
|
||||
{
|
||||
+ foreach (XInput2DeviceData *dev, m_touchDevices) {
|
||||
+ if (dev->xiDeviceInfo)
|
||||
+ XIFreeDeviceInfo(dev->xiDeviceInfo);
|
||||
+ delete dev;
|
||||
+ }
|
||||
}
|
||||
|
||||
void QXcbConnection::xi2Select(xcb_window_t window)
|
||||
@@ -393,6 +398,7 @@ XInput2DeviceData *QXcbConnection::deviceForId(int id)
|
||||
m_touchDevices[id] = dev;
|
||||
} else {
|
||||
m_touchDevices.remove(id);
|
||||
+ XIFreeDeviceInfo(dev->xiDeviceInfo);
|
||||
delete dev;
|
||||
dev = 0;
|
||||
}
|
||||
--
|
||||
1.8.4.5
|
||||
|
@ -1,128 +0,0 @@
|
||||
From 19d289ab1b5bde3e136765e5432b5c7d004df3a4 Mon Sep 17 00:00:00 2001
|
||||
From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
|
||||
Date: Tue, 20 May 2014 09:57:39 +0200
|
||||
Subject: [PATCH] Listen to touch events on the master device instead of slave.
|
||||
|
||||
Listening to touch events on the master prevents pointer emulation
|
||||
events from being generated, alleviating the need to grab.
|
||||
|
||||
Grabbing on the slave device is buggy, and breaks pointer emulation
|
||||
on all current servers that support XInput 2.2 due to a bug in the
|
||||
server, and will also grab unwanted touch events.
|
||||
|
||||
For reference, see https://bugs.freedesktop.org/show_bug.cgi?id=78345
|
||||
|
||||
Reverts 2c65b78b400ec27e6e559829b9a970dca2df6669. The idea of
|
||||
enabling each touchscreen separately was introduced in
|
||||
4dbf574b7acb7ae8f852219700afa95f8d568f0e; that aspect is also
|
||||
reverted.
|
||||
|
||||
Change-Id: I30d36397aa4ff2fb7a8ad2bbb94c2a13abd472b4
|
||||
Task-number: QTBUG-38625
|
||||
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
|
||||
---
|
||||
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 49 +++++++-----------------
|
||||
1 file changed, 13 insertions(+), 36 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
index a574dca..cf809b3 100644
|
||||
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
|
||||
@@ -251,14 +251,13 @@ void QXcbConnection::xi2Select(xcb_window_t window)
|
||||
XIEventMask mask;
|
||||
mask.mask_len = sizeof(bitMask);
|
||||
mask.mask = xiBitMask;
|
||||
- // Enable each touchscreen
|
||||
- foreach (XInput2DeviceData *dev, m_touchDevices) {
|
||||
- mask.deviceid = dev->xiDeviceInfo->deviceid;
|
||||
+ if (!m_touchDevices.isEmpty()) {
|
||||
+ mask.deviceid = XIAllMasterDevices;
|
||||
Status result = XISelectEvents(xDisplay, window, &mask, 1);
|
||||
- // If we have XInput >= 2.2 and successfully enable a touchscreen, then
|
||||
- // it will provide touch only. In most other cases, there will be
|
||||
- // emulated mouse events from the driver. If not, then Qt must do its
|
||||
- // own mouse emulation to enable interaction with mouse-oriented QWidgets.
|
||||
+ // If we select for touch events on the master pointer, XInput2
|
||||
+ // will not synthesize mouse events. This means Qt must do it,
|
||||
+ // which is also preferable, since Qt can control better when
|
||||
+ // to do so.
|
||||
if (m_xi2Minor >= 2 && result == Success)
|
||||
has_touch_without_mouse_emulation = true;
|
||||
}
|
||||
@@ -272,10 +271,10 @@ void QXcbConnection::xi2Select(xcb_window_t window)
|
||||
// similar handlers useless and we have no intention to infect
|
||||
// all the pure xcb code with Xlib-based XI2.
|
||||
if (!m_tabletData.isEmpty()) {
|
||||
- unsigned int tabletBitMask = bitMask;
|
||||
+ unsigned int tabletBitMask;
|
||||
unsigned char *xiTabletBitMask = reinterpret_cast<unsigned char *>(&tabletBitMask);
|
||||
QVector<XIEventMask> xiEventMask(m_tabletData.count());
|
||||
- tabletBitMask |= XI_ButtonPressMask;
|
||||
+ tabletBitMask = XI_ButtonPressMask;
|
||||
tabletBitMask |= XI_ButtonReleaseMask;
|
||||
tabletBitMask |= XI_MotionMask;
|
||||
tabletBitMask |= XI_PropertyEventMask;
|
||||
@@ -294,24 +293,18 @@ void QXcbConnection::xi2Select(xcb_window_t window)
|
||||
// Enable each scroll device
|
||||
if (!m_scrollingDevices.isEmpty()) {
|
||||
QVector<XIEventMask> xiEventMask(m_scrollingDevices.size());
|
||||
- unsigned int scrollBitMask = 0;
|
||||
+ unsigned int scrollBitMask;
|
||||
unsigned char *xiScrollBitMask = reinterpret_cast<unsigned char *>(&scrollBitMask);
|
||||
+
|
||||
scrollBitMask = XI_MotionMask;
|
||||
scrollBitMask |= XI_ButtonReleaseMask;
|
||||
- bitMask |= XI_MotionMask;
|
||||
- bitMask |= XI_ButtonReleaseMask;
|
||||
int i=0;
|
||||
Q_FOREACH (const ScrollingDevice& scrollingDevice, m_scrollingDevices) {
|
||||
if (tabletDevices.contains(scrollingDevice.deviceId))
|
||||
continue; // All necessary events are already captured.
|
||||
xiEventMask[i].deviceid = scrollingDevice.deviceId;
|
||||
- if (m_touchDevices.contains(scrollingDevice.deviceId)) {
|
||||
- xiEventMask[i].mask_len = sizeof(bitMask);
|
||||
- xiEventMask[i].mask = xiBitMask;
|
||||
- } else {
|
||||
- xiEventMask[i].mask_len = sizeof(scrollBitMask);
|
||||
- xiEventMask[i].mask = xiScrollBitMask;
|
||||
- }
|
||||
+ xiEventMask[i].mask_len = sizeof(scrollBitMask);
|
||||
+ xiEventMask[i].mask = xiScrollBitMask;
|
||||
i++;
|
||||
}
|
||||
XISelectEvents(xDisplay, window, xiEventMask.data(), i);
|
||||
@@ -458,7 +451,7 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
|
||||
fixed1616ToReal(xiDeviceEvent->root_x), fixed1616ToReal(xiDeviceEvent->root_y) );
|
||||
|
||||
if (QXcbWindow *platformWindow = platformWindowFromId(xiDeviceEvent->event)) {
|
||||
- XInput2DeviceData *dev = deviceForId(xiEvent->deviceid);
|
||||
+ XInput2DeviceData *dev = deviceForId(xiDeviceEvent->sourceid);
|
||||
Q_ASSERT(dev);
|
||||
const bool firstTouch = m_touchPoints.isEmpty();
|
||||
if (xiEvent->evtype == XI_TouchBegin) {
|
||||
@@ -563,22 +556,6 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
|
||||
qDebug() << " touchpoint " << touchPoint.id << " state " << touchPoint.state << " pos norm " << touchPoint.normalPosition <<
|
||||
" area " << touchPoint.area << " pressure " << touchPoint.pressure;
|
||||
QWindowSystemInterface::handleTouchEvent(platformWindow->window(), xiEvent->time, dev->qtTouchDevice, m_touchPoints.values());
|
||||
- if (has_touch_without_mouse_emulation) {
|
||||
- // We need to grab the touch event to prevent mouse emulation.
|
||||
- if (xiEvent->evtype == XI_TouchBegin) {
|
||||
- XIEventMask xieventmask;
|
||||
- unsigned int bitMask = 0;
|
||||
- unsigned char *xiBitMask = reinterpret_cast<unsigned char *>(&bitMask);
|
||||
- xieventmask.deviceid = xiEvent->deviceid;
|
||||
- xieventmask.mask = xiBitMask;
|
||||
- xieventmask.mask_len = sizeof(bitMask);
|
||||
- bitMask |= XI_TouchBeginMask;
|
||||
- bitMask |= XI_TouchUpdateMask;
|
||||
- bitMask |= XI_TouchEndMask;
|
||||
- XIGrabDevice(static_cast<Display *>(m_xlib_display), xiEvent->deviceid, platformWindow->winId(), xiEvent->time, None, GrabModeAsync, GrabModeAsync, true, &xieventmask);
|
||||
- } else if (xiEvent->evtype == XI_TouchEnd)
|
||||
- XIUngrabDevice(static_cast<Display *>(m_xlib_display), xiEvent->deviceid, xiEvent->time);
|
||||
- }
|
||||
if (touchPoint.state == Qt::TouchPointReleased)
|
||||
// If a touchpoint was released, we can forget it, because the ID won't be reused.
|
||||
m_touchPoints.remove(touchPoint.id);
|
||||
--
|
||||
1.8.4.5
|
||||
|
@ -1,3 +1,245 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 4 20:37:34 UTC 2014 - hrvoje.senjan@gmail.com
|
||||
|
||||
- Update to 5.3.2~git20140904 (r05670f5):
|
||||
* Tip of the bugfix 5.3.2 branch:
|
||||
* Recreate child windows when changing screens
|
||||
* QCoreTextFontDatabase: Remove number type asserts.
|
||||
* QGLXContext survives screen removal
|
||||
* CoreWLan: terminate scan thread in QCoreWlanEngine destructor
|
||||
* Also print the class name in the QObject::killTimer error msg
|
||||
* Initialize textureId in platform backing store
|
||||
* Doc: corrected autolink errors corelib io
|
||||
* Avoid crash if querying device that has gone away
|
||||
* Doc: corrected autolink errors Qjsonvalue
|
||||
* Network: Fix NTLM (SSPI) with HTTP and HTTPS proxies
|
||||
* remove always ask option.
|
||||
* Fix handling QT_IM_MODULE=none
|
||||
* xcb: use keyboard event source window to determine
|
||||
auto-repeat valuen
|
||||
* Fix invalid memcpy(dst, src) calls where dst == src
|
||||
* Fix several regressions in font selection
|
||||
* Detect wrongly labelled wheel buttons
|
||||
* Make QWindowContainer handle drag'n'drop
|
||||
* Resize correctly on orientation change.
|
||||
* Use correct size in fullscreen mode
|
||||
* Properly null-terminate ifreq::irf_name
|
||||
* fingerpaint example: be sensitive to pressure only
|
||||
when supported
|
||||
* Fix a memory leak in QFseventsFileSystemWatcherEngine
|
||||
* Do not set QMAKE_{INC,LIB}DIR_{OPENGL,X11} in the
|
||||
freebsd mkspecs.
|
||||
* refactor disconnectFromFtp to remove cached entries
|
||||
when necessary
|
||||
* Remove reference to gdb_dwarf_index from the
|
||||
freebsd-clang mkspec.
|
||||
* Fix mistake in function extraTryFontsForFamily
|
||||
* Fix rendering of fonts matched based on stretch
|
||||
* Fix x86/32-bit build when using an old version of gcc
|
||||
* Fix selection of fonts based on styleName
|
||||
* QFusionStyle paints sliders outside of clip
|
||||
* Set iMX device specific compiler flags to QMAKE_CFLAGS
|
||||
* Fix QPainter::drawPolyline() painting errors with
|
||||
cosmetic pen
|
||||
* Let QImage::mirrored() retain dots-per-meter settings
|
||||
* Make sure we don't cache old file sizes prior to new writes
|
||||
* Correct the SYNC hint for the release barrier
|
||||
* Fix QT_NO_REGULAREXPRESSION build
|
||||
* Fix QT_NO_ANIMATION build
|
||||
* Fix build with QT_NO_MDIAREA
|
||||
* Show the correct cursor for QLineEdit's side buttons.
|
||||
* Fix disconnect()ing from signals declared in a base class
|
||||
* Fix rendering alpha-blended text which needs to be
|
||||
clipped at the top.
|
||||
* Fix build due to missing include when using a minimal config.
|
||||
* Fix build with QT_NO_DRAGANDDROP
|
||||
* Font Database: Add support for private, system UI
|
||||
font families
|
||||
* Apply upstream patch r1498 to our PCRE copy
|
||||
* Apply upstream patch r1495 to our PCRE copy
|
||||
* Initialize member.
|
||||
* Document missing QLatin1String methods
|
||||
* network tests: add manual test for auth / proxy auth
|
||||
* Uncomment some tests which accidently got commented
|
||||
* Both HiQualAA and normal AA should mean
|
||||
antialiasing in rasterengine.
|
||||
* Check if Start/EndPage returns non-positive value
|
||||
when error checking
|
||||
* GTK file dialog: pre-fill the filename if given to a
|
||||
Save dialog
|
||||
* QFileDialog docs: remove misleading sentence about
|
||||
static functions
|
||||
* Doc: Placed Qt OpenGL class convention in code block.
|
||||
* Undo: Fix state entry bug for parallel state groups
|
||||
* Do not add QOffscreenSurface windows to the global list
|
||||
* tst_QHash: check which of several equal keys is inserted
|
||||
* OpenGL: destroy QGLContext allocated by
|
||||
QGLContext::fromOpenGLContext
|
||||
* tst_QSet: check which of several equal elements is inserted
|
||||
* fix paths in installed qtmain.prl
|
||||
* add /ENTRY:main only for target builds
|
||||
* avoid that CROSS_COMPILE affects host builds
|
||||
* Add missing power button keycode to keymap
|
||||
* Android: export ANDROID_SDK_BUILD_TOOLS_REVISION.
|
||||
* cocoa: Fix compiler warnings about unused functions.
|
||||
* Propagate swapInterval to QGLFormat
|
||||
* Fix double clicks in eglfs
|
||||
* Work around ICC bug in local static symbols for
|
||||
Q_GLOBAL_STATIC
|
||||
* QCoreTextFontDatabase: Fix font weight value when
|
||||
populating a family
|
||||
* Don't convert signed to unsigned when we need all 32bit
|
||||
* Fix compilation if EC is disabled in OpenSSL
|
||||
* Fix warning message when re-setting text on tooltip
|
||||
* Improve dbus cross compilation
|
||||
* Fix buffer overrun error with some proxy servers
|
||||
* QNAM: Fix CPU load for limited upload QIODevice
|
||||
* qmake: Document the "aux" template type.
|
||||
* Use the stateless UTF-8 encoder in QStringRef::toUtf8
|
||||
* Doc: corrected autolink errors in qnamespace.qdoc
|
||||
* QPixmap::fromImage() should detach when changing
|
||||
QImage format
|
||||
* generate QGL header file from qgl.h
|
||||
* Ensure transient parents are top level widgets.
|
||||
* Added stream version into network cache file format
|
||||
* make QtWidgets claim style plugins
|
||||
* CMake: Don't check the existence of GL files in the
|
||||
Qt5Gui package.
|
||||
* QSplitter: Exclude top level widgets from child
|
||||
event handling.
|
||||
* Doc: Hide QTextInlineObject constructor from
|
||||
the documentation
|
||||
* Work around ICC bug in brace initializations
|
||||
containing constexpr
|
||||
* Doc: edited qtxml.qdocconf
|
||||
* xcb: QTabletEvents and proximity events correctly
|
||||
identify the tool
|
||||
* Fixed wrong function name in a file snippet
|
||||
* XCB: Enable loading of the Qt::DragLinkCursor
|
||||
* Fix fallbacks for adapted common script
|
||||
* Fix fallbacks for adapted common script
|
||||
* QSslCertificate: blacklist NIC certificates from India
|
||||
* Doc: moved saxbookmarks example files
|
||||
* tst_qdir: Move QFINDTESTDATA() from init() to constructor.
|
||||
* Doc: moved streambookmarks example files
|
||||
* Don't assert when HB-old is unable to deal with surrogates
|
||||
* REG: Fix nbsp in QTextLayout
|
||||
* Support getting test data from qrc
|
||||
* Document QApplication::cursorFlashTime() can return -1
|
||||
* Fix for code snippet in commandlineparser documentation
|
||||
* Doc: removed trolltech.com from namespace in manual
|
||||
qdocconf file.
|
||||
* Fix typo in QGraphicsView documentation.
|
||||
* Fix QTimer with negative interval in
|
||||
QWidgetLineControl::setCursorBlinkPeriod
|
||||
* Attempt to work with Visual Studio in -Za (strict ANSI) mode
|
||||
* Improve QListWidget documentation.
|
||||
* Fix debug output of QTouchEvent.
|
||||
* Doc: fix a link in QAbstractOpenGLFunctions documentation
|
||||
* Accessibility Linux: Fix crashes when accessing
|
||||
invalid functions
|
||||
* move loading of testability driver from QApplication
|
||||
to QGuiApplication
|
||||
* QPdf::addImage(): avoid a QImage detach when it's in an
|
||||
acceptable Format
|
||||
* Make QDom/QXmlSimpleReader reentrant.
|
||||
* Move QXmlReaderPrivate to private header.
|
||||
* Mac: Don't register for Pan Gestures.
|
||||
* Add opt-out environment variable for @2x images
|
||||
* Listen to touch events on the master device instead of slave.
|
||||
* add support for device linux-arm-hisilicon-hix5hd2-g++
|
||||
* Make tst_QLocale::macDefaultLocale() more robust
|
||||
* Fix some tst_qwidget test cases
|
||||
* xcb: make sure to update window title when it is changed
|
||||
* Skip unstable autotests in QtBase.
|
||||
* Empty icons and Cocoa menu items.
|
||||
* Address Book example: Fix QTableView column sorting
|
||||
* QOpenGLTexture: fix the feature test for Buffer Textures
|
||||
* qDebug: fix data race in qt_message_print
|
||||
* [bcm97425] Fix parameter issue in platformDestroy hook
|
||||
* Doc: Various \note fixes in Qt namespace documentation.
|
||||
* Fix QFileInfoGatherer threading issue
|
||||
* Doc: Fix typo in QScopedValueRollback
|
||||
* Fix pixel noise in X11 systray icons that are not 22x22
|
||||
* Don't compare the target methods for SlotObject connections
|
||||
* qtoolbar: add missing header on OSX.
|
||||
* Remove bogus nullptr check for reference
|
||||
* Support MIPS atomic on pre-MIPS32 architectures
|
||||
* Enable sparc detection.
|
||||
* Remove -Wcast-align from QMAKE_CXXFLAGS.
|
||||
* Create the 64 bits version strings for MIPS, SPARC and S390
|
||||
* Add a comment stating QMutex::isRecursive should be made
|
||||
const in Qt6
|
||||
* Fix QMutex documentation saying some function are static
|
||||
while they are not
|
||||
* Delete qml_plugin_import.cpp file only during distclean
|
||||
* WinRT: no read-only paths in QStandardpaths::writableLocation
|
||||
* Fix compilation on Windows without precompiled headers
|
||||
* QColorDialog: Do not update custom/standard color cells
|
||||
while picking.
|
||||
* Fix -Werror compilation on big-endian
|
||||
* CMake: Allow modules to specify the location of tests.
|
||||
* Mark behavior of QFileInfo::absoluteFilePath as undefined in
|
||||
corner cases
|
||||
* Translate Super/Hyper keys to MetaModifier
|
||||
* Fix logging file location docs
|
||||
* CMake: Report an error if unit tests are not found for
|
||||
a module.
|
||||
* Fix QRingBuffer::readPointerAtPosition()
|
||||
* Make the fetchAndAddRelaxed function a member template
|
||||
* Doc: qInstallMessageHandler cannot return 0.
|
||||
* GIF decoding: do not seek() if the image is loaded
|
||||
over the network
|
||||
* network internals: do not try to cache a deleted entry
|
||||
* Fix memory leaks in QFseventsFileSystemWatcherEngine
|
||||
* Simplify mirroring code and add tests for non-aliged
|
||||
1 bit images
|
||||
* Add that the corner settings are saved/restored
|
||||
with the state
|
||||
* Correct grammar of missing Q_OBJECT macro warning.
|
||||
* Doc: Fix docs for QFontMetrics::height() to match code
|
||||
* Fix installation of private headers generated
|
||||
by wayland-scanner
|
||||
* add buildsystem/qmake changelog
|
||||
* CMake: Load plugin files unconditionally if present.
|
||||
* QIcon: Prefer high-quality images of Windows .ico files.
|
||||
* tst_qicon: Resolve all files using QFINDTESTDATA().
|
||||
* Move most of the QLibraryPrivate initialization to
|
||||
its constructor
|
||||
* QComboBox: update focus policy when setting a new line edit
|
||||
* QDBus: fix data race on isDebugging bool
|
||||
* When filling the path it should use the painter's pen
|
||||
not the state's
|
||||
* Fix data race on QLoggingCategory when using qDebug
|
||||
from multiple threads
|
||||
* Remove the use of QT_STATIC_CONST in QtSql
|
||||
* Fix compilation with /Zc:strictStrings
|
||||
* Correct QImage::fill(uint) on RGBA8888 formats
|
||||
* XCB: Fix leak with touch devices
|
||||
* pass a pointer instead of a reference to initFrom()
|
||||
* Properly check which OpenGL features are supported
|
||||
* Do not overwrite existing event mask of root window
|
||||
* Remove the widget from the stylesheet cache before polishing
|
||||
* QDnsLookup: Fix build with uClibc
|
||||
* Remove unused define XCB_USE_IBUS.
|
||||
* Attempt to fix intel compiler build error.
|
||||
* Use QModelIndex to get the data from underlying model
|
||||
* QGuiApplication: Document -plugin command line argument.
|
||||
* Fix compilation in under -no-c++11 mode
|
||||
* Fix compilation with the Intel compiler on certain systems
|
||||
- Drop patches merged upstream:
|
||||
0001-Do-not-overwrite-existing-event-mask-of-root-window.patch,
|
||||
0002-Properly-check-which-OpenGL-features-are-supported.patch,
|
||||
0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch,
|
||||
0004-QDBus-fix-data-race-on-isDebugging-bool.patch,
|
||||
0005-Translate-Super-Hyper-keys-to-MetaModifier.patch,
|
||||
libqt5-avoid-crash-during-querying-device.patch,
|
||||
libqt5-fix-leak-with-touch-devices-in-xcb.patch and
|
||||
libqt5-listen-to-touch-events-on-the-master-device.patch
|
||||
- Added protect-geometry-QTBUG-40584.patch, to workaround QTBUG-40584,
|
||||
so widget geometry is preserved
|
||||
- Reorder patches
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 29 06:57:03 UTC 2014 - mlin@suse.com
|
||||
|
||||
|
@ -16,65 +16,48 @@
|
||||
#
|
||||
|
||||
|
||||
%define qt5_snapshot 0
|
||||
%define qt5_snapshot 1
|
||||
%define journald 0
|
||||
|
||||
Name: libqt5-qtbase
|
||||
Version: 5.3.1
|
||||
Version: 5.3.2~git20140904
|
||||
Release: 0
|
||||
Summary: C++ Program Library, Core Components
|
||||
License: GPL-3.0 or SUSE-LGPL-2.1-with-digia-exception-1.1
|
||||
Group: System/Libraries
|
||||
Url: http://qt.digia.com
|
||||
%define base_name libqt5
|
||||
%define real_version 5.3.1
|
||||
%define so_version 5.3.1
|
||||
%if %qt5_snapshot
|
||||
%define tar_version qtbase-%{real_version}
|
||||
%else
|
||||
%define real_version 5.3.2
|
||||
%define so_version 5.3.2
|
||||
%define tar_version qtbase-opensource-src-%{real_version}
|
||||
%endif
|
||||
Source: %{tar_version}.tar.xz
|
||||
# to get mtime of file:
|
||||
Source1: libqt5-qtbase.changes
|
||||
Source2: macros.qt5
|
||||
Source3: baselibs.conf
|
||||
# patches 0-1000 are openSUSE and/or non-upstream(able) patches #
|
||||
# PATCH-FIX-UPSTREAM libqt5-libtool-nodate.diff -- for ommiting date/time on build
|
||||
Patch109: libqt5-libtool-nodate.diff
|
||||
Patch0: libqt5-libtool-nodate.diff
|
||||
# PATCH-FIX-UPSTREAM qmake-add-usr-include.diff -- explicitly include /usr/include path
|
||||
Patch131: qmake-add-usr-include.diff
|
||||
Patch1: qmake-add-usr-include.diff
|
||||
# PATCH-FIX-UPSTREAM use-freetype-default.patch -- allow using lcd-default filter regardless of how freetype2 library has been built (w/ & w/o subpixel)
|
||||
Patch132: use-freetype-default.patch
|
||||
# PATCH-FIX-UPSTREAM f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch -- prefer QPA implementation in qsystemtrayicon_x11 if available
|
||||
Patch133: f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch
|
||||
# PATCH-FIX-UPSTREAM libqt5-add-support-for-byte-swapping.patch -- add support for byte swapping(bnc#866709), currently it's at the upstream dev branch
|
||||
Patch134: libqt5-add-support-for-byte-swapping.patch
|
||||
# PATCH-FIX-UPSTREAM libqt5-byte-order-byte-is-address0.patch -- the byte order byte is at address 0(bnc#866709), currently it's at the upstream dev branch
|
||||
Patch135: libqt5-byte-order-byte-is-address0.patch
|
||||
Patch2: use-freetype-default.patch
|
||||
# PATCH-FIX-SUSE libqt5-Fix-Gujarati-font.patch bnc#878292 fix broken Gujarati font rendering
|
||||
Patch136: libqt5-Fix-Gujarati-font.patch
|
||||
|
||||
# patches 1000 and above from upstream 5.3 branch #
|
||||
# PATCH-FIX-UPSTREAM 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch -- QTBUG-39648
|
||||
Patch1000: 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch
|
||||
# PATCH-FIX-UPSTREAM 0002-Properly-check-which-OpenGL-features-are-supported.patch -- QTBUG-39730
|
||||
Patch1001: 0002-Properly-check-which-OpenGL-features-are-supported.patch
|
||||
# PATCH-FIX-UPSTREAM 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch -- Fix data race on QLoggingCategory
|
||||
Patch1002: 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch
|
||||
# PATCH-FIX-UPSTREAM 0004-QDBus-fix-data-race-on-isDebugging-bool.patch -- fix data race on isDebugging bool
|
||||
Patch1003: 0004-QDBus-fix-data-race-on-isDebugging-bool.patch
|
||||
# PATCH-FIX-UPSTREAM 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch -- QTBUG-38428
|
||||
Patch1004: 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch
|
||||
Patch3: libqt5-Fix-Gujarati-font.patch
|
||||
# PATCH-FIX-UPSTREAM protect-geometry-QTBUG-40584.patch -- https://bugreports.qt-project.org/browse/QTBUG-40584
|
||||
Patch4: protect-geometry-QTBUG-40584.patch
|
||||
# patches 1000-2000 and above from upstream 5.3 branch #
|
||||
# patches 2000-3000 and above from upstream 5.4 branch #
|
||||
# PATCH-FIX-UPSTREAM f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch -- prefer QPA implementation in qsystemtrayicon_x11 if available
|
||||
Patch2000: f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch
|
||||
# PATCH-FIX-UPSTREAM libqt5-add-support-for-byte-swapping.patch -- add support for byte swapping(bnc#866709), currently it's at the upstream dev branch
|
||||
Patch2001: libqt5-add-support-for-byte-swapping.patch
|
||||
# PATCH-FIX-UPSTREAM libqt5-byte-order-byte-is-address0.patch -- the byte order byte is at address 0(bnc#866709), currently it's at the upstream dev branch
|
||||
Patch2002: libqt5-byte-order-byte-is-address0.patch
|
||||
# PATCH-FIX-UPSTREAM 00010-Replace-the-const-QString-global-static-with-a-QStri.patch
|
||||
Patch2000: 00010-Replace-the-const-QString-global-static-with-a-QStri.patch
|
||||
Patch2003: 00010-Replace-the-const-QString-global-static-with-a-QStri.patch
|
||||
# PATCH-FIX-UPSTREAM 00011-Use-correct-signal-name-when-disconnecting.patch
|
||||
Patch2001: 00011-Use-correct-signal-name-when-disconnecting.patch
|
||||
# PATCH-FIX-UPSTREAM libqt5-fix-leak-with-touch-devices-in-xcb.patch -- QTBUG-39596
|
||||
Patch2002: libqt5-fix-leak-with-touch-devices-in-xcb.patch
|
||||
# PATCH-FIX-UPSTREAM libqt5-listen-to-touch-events-on-the-master-device.patch -- QTBUG-38625
|
||||
Patch2003: libqt5-listen-to-touch-events-on-the-master-device.patch
|
||||
# PATCH-FIX-UPSTREAM libqt5-avoid-crash-during-querying-device.patch -- QTBUG-40820
|
||||
Patch2004: libqt5-avoid-crash-during-querying-device.patch
|
||||
Patch2004: 00011-Use-correct-signal-name-when-disconnecting.patch
|
||||
BuildRequires: alsa-devel
|
||||
BuildRequires: cups-devel
|
||||
BuildRequires: fdupes
|
||||
@ -152,23 +135,12 @@ handling.
|
||||
%define libqt5_translationdir %{libqt5_datadir}/translations
|
||||
|
||||
%prep
|
||||
%if %qt5_snapshot
|
||||
%setup -q -n qtbase-%{real_version}
|
||||
%else
|
||||
%setup -q -n qtbase-opensource-src-%{real_version}
|
||||
%endif
|
||||
%patch109 -p1
|
||||
%patch131 -p1
|
||||
%patch132 -p1
|
||||
%patch133 -p1
|
||||
%patch134 -p1
|
||||
%patch135 -p1
|
||||
%patch136 -p1
|
||||
%patch1000 -p1
|
||||
%patch1001 -p1
|
||||
%patch1002 -p1
|
||||
%patch1003 -p1
|
||||
%patch1004 -p1
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch2000 -p1
|
||||
%patch2001 -p1
|
||||
%patch2002 -p1
|
||||
|
18
protect-geometry-QTBUG-40584.patch
Normal file
18
protect-geometry-QTBUG-40584.patch
Normal file
@ -0,0 +1,18 @@
|
||||
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
|
||||
index 35a526e..d417e41 100644
|
||||
--- a/src/widgets/kernel/qwidgetwindow.cpp
|
||||
+++ b/src/widgets/kernel/qwidgetwindow.cpp
|
||||
@@ -551,6 +551,13 @@ void QWidgetWindow::updateGeometry()
|
||||
|
||||
const QMargins margins = frameMargins();
|
||||
|
||||
+ if (geometry().x() != m_widget->data->crect.x() ||
|
||||
+ geometry().y() != m_widget->data->crect.y())
|
||||
+ m_widget->setAttribute(Qt::WA_Moved);
|
||||
+ if (geometry().width() != m_widget->data->crect.width() ||
|
||||
+ geometry().height() != m_widget->data->crect.height())
|
||||
+ m_widget->setAttribute(Qt::WA_Resized);
|
||||
+
|
||||
m_widget->data->crect = geometry();
|
||||
QTLWExtra *te = m_widget->d_func()->topData();
|
||||
te->posIncludesFrame= false;
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7b5a138d30d7c0228a51084407d5210f6d1acfbee2f95b87f189872cfcd3a569
|
||||
size 46679724
|
3
qtbase-opensource-src-5.3.2.tar.xz
Normal file
3
qtbase-opensource-src-5.3.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:145d325c0f923a7cf9389c4704567d74338b7f7e5df54a19ce44376936771ee6
|
||||
size 48158068
|
Loading…
Reference in New Issue
Block a user