Hello community,

here is the log from the commit of package libqt5-qtbase for openSUSE:Factory 
checked in at 2014-11-11 09:59:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtbase (Old)
 and      /work/SRC/openSUSE:Factory/.libqt5-qtbase.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt5-qtbase"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtbase/libqt5-qtbase.changes      
2014-10-14 13:25:08.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libqt5-qtbase.new/libqt5-qtbase.changes 
2014-11-11 09:59:23.000000000 +0100
@@ -1,0 +2,19 @@
+Wed Nov  5 16:51:36 UTC 2014 - [email protected]
+
+- Added patches from upstream:
+  0001-Allow-panels-outside-of-availableGeometry.patch (kde#339846)
+  and 0002-Always-lock-the-DBus-dispatcher-before-dbus_connecti.patch,
+  0003-QDBusConnection-Merge-the-dispatch-and-the-watch-and.patch,
+  0004-Partially-revert-Fix-a-deadlock-introduced-by-the-ra.patch,
+  for QTBUG#42189
+
+-------------------------------------------------------------------
+Wed Oct 29 19:09:33 UTC 2014 - [email protected]
+
+- Don't install CMake files for plugins, they are useful only for
+  bundled Qt builds
+- Downgrade sql-plugins from libQt5Sql-devel's requires to suggests
+- Added QTBUG41590.patch, improve font rendering
+  (QTBUG41590,QTBUG40971)
+
+-------------------------------------------------------------------

New:
----
  0001-Allow-panels-outside-of-availableGeometry.patch
  0002-Always-lock-the-DBus-dispatcher-before-dbus_connecti.patch
  0003-QDBusConnection-Merge-the-dispatch-and-the-watch-and.patch
  0004-Partially-revert-Fix-a-deadlock-introduced-by-the-ra.patch
  QTBUG41590.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libqt5-qtbase.spec ++++++
--- /var/tmp/diff_new_pack.8ukJ13/_old  2014-11-11 09:59:25.000000000 +0100
+++ /var/tmp/diff_new_pack.8ukJ13/_new  2014-11-11 09:59:25.000000000 +0100
@@ -48,6 +48,8 @@
 Patch4:         protect-geometry-QTBUG-40584.patch
 # Patch-FIX-SUSE libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch 
-- bnc#888858
 Patch5:         libqt5-do-not-use-shm-if-display-name-doesnt-look-local.patch
+# PATCH-FIX-OPENSUSE QTBUG41590.patch -- 
https://bugreports.qt-project.org/browse/QTBUG-40971 
https://bugreports.qt-project.org/browse/QTBUG-41590
+Patch6:         QTBUG41590.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
@@ -78,6 +80,14 @@
 Patch2012:      0003-Support-autohint-and-lcdfilter-fontconfig-configurat.patch
 # PATCH-FIX-UPSTREAM 
0004-GTK2-theme-should-use-GTK-configured-font-variant.patch
 Patch2013:      0004-GTK2-theme-should-use-GTK-configured-font-variant.patch
+# PATCH-FIX-UPSTREAM 0001-Allow-panels-outside-of-availableGeometry.patch
+Patch2014:      0001-Allow-panels-outside-of-availableGeometry.patch
+# PATCH-FIX-UPSTREAM 
0002-Always-lock-the-DBus-dispatcher-before-dbus_connecti.patch
+Patch2015:      0002-Always-lock-the-DBus-dispatcher-before-dbus_connecti.patch
+# PATCH-FIX-UPSTREAM 
0003-QDBusConnection-Merge-the-dispatch-and-the-watch-and.patch
+Patch2016:      0003-QDBusConnection-Merge-the-dispatch-and-the-watch-and.patch
+# PATCH-FIX-UPSTREAM 
0004-Partially-revert-Fix-a-deadlock-introduced-by-the-ra.patch
+Patch2017:      0004-Partially-revert-Fix-a-deadlock-introduced-by-the-ra.patch
 BuildRequires:  alsa-devel
 BuildRequires:  cups-devel
 BuildRequires:  fdupes
@@ -162,6 +172,7 @@
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p0
 %patch2000 -p1
 %patch2001 -p1
 %patch2002 -p1
@@ -176,6 +187,10 @@
 %patch2011 -p1
 %patch2012 -p1
 %patch2013 -p1
+%patch2014 -p1
+%patch2015 -p1
+%patch2016 -p1
+%patch2017 -p1
 
 # be sure not to use them
 rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib}
@@ -541,10 +556,10 @@
 Group:          Development/Libraries/C and C++
 Requires:       libQt5Core-devel = %{version}
 Requires:       libQt5Sql5 = %{version}
-Requires:       libQt5Sql5-mysql = %{version}
-Requires:       libQt5Sql5-postgresql = %{version}
-Requires:       libQt5Sql5-sqlite = %{version}
-Requires:       libQt5Sql5-unixODBC = %{version}
+Suggests:       libQt5Sql5-mysql = %{version}
+Suggests:       libQt5Sql5-postgresql = %{version}
+Suggests:       libQt5Sql5-sqlite = %{version}
+Suggests:       libQt5Sql5-unixODBC = %{version}
 
 %description -n libQt5Sql-devel
 Qt 5 libraries which are used for connection with an SQL server. You
@@ -783,6 +798,10 @@
 find %{buildroot}/%{libqt5_libdir}/ -name 'lib*.a' -exec chmod -x -- {} \;
 # kill .la files
 rm -f %{buildroot}%{libqt5_libdir}/lib*.la
+
+# 
+rm -fv %{buildroot}%{libqt5_libdir}/cmake/Qt5*/Q*Plugin.cmake
+
 mkdir -p %{buildroot}/%{libqt5_plugindir}/sqldrivers
 
 # put all the binaries to %{_bindir}, add -qt5 suffix, and symlink them back 
to %_qt5_bindir

++++++ 0001-Allow-panels-outside-of-availableGeometry.patch ++++++
>From 0ac4019528888aba8528432434300341df732c4e Mon Sep 17 00:00:00 2001
From: Marco Martin <[email protected]>
Date: Tue, 14 Oct 2014 16:55:17 +0200
Subject: [PATCH 1/4] Allow panels outside of availableGeometry
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Panels windows are usually outside QScreen::availableGeometry, because
they will usually set extended struts to reserve the screen area for
themselves, but their own screen() must remain the one in which they
are.
This cause one downstream behavior to KDE
https://bugs.kde.org/show_bug.cgi?id=339846
in which a panel got by mistake few pixels on another screen, and
was immediately reassigned to that screen, because its geometry was
intersecting the new screen availableGeometry() but not the geometry
of its own screen, because itself reserved its own geometry away
from availableGeometry()

Change-Id: If6c9defdef62732473687dd336dbcec582bd0ea2
Reviewed-by: Jørgen Lind <[email protected]>
(cherry picked from commit 47ec22a50975d6f616043fc12424ae1e12e584bd)
---
 src/plugins/platforms/xcb/qxcbwindow.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp 
b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 
586068d8d9ed9c1987e51d664f76d4f33769f293..a99a5cfab51861b2c64ad552709f5d0bd39a62f3
 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -1687,9 +1687,9 @@ void QXcbWindow::handleConfigureNotifyEvent(const 
xcb_configure_notify_event_t *
     QPlatformWindow::setGeometry(rect);
     QWindowSystemInterface::handleGeometryChange(window(), rect);
 
-    if (!m_screen->availableGeometry().intersects(rect)) {
+    if (!m_screen->geometry().intersects(rect)) {
         Q_FOREACH (QPlatformScreen* screen, m_screen->virtualSiblings()) {
-            if (screen->availableGeometry().intersects(rect)) {
+            if (screen->geometry().intersects(rect)) {
                 m_screen = static_cast<QXcbScreen*>(screen);
                 QWindowSystemInterface::handleWindowScreenChanged(window(), 
m_screen->QPlatformScreen::screen());
                 break;
-- 
2.1.2

++++++ 0002-Always-lock-the-DBus-dispatcher-before-dbus_connecti.patch ++++++
>From 596a3d701bfb96de01ff2e127cd628c6b50fd9d6 Mon Sep 17 00:00:00 2001
From: Thiago Macieira <[email protected]>
Date: Tue, 28 Oct 2014 17:23:09 -0700
Subject: [PATCH 2/4] Always lock the DBus dispatcher before
 dbus_connection_send*
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We lock it before dbus_connection_send_with_reply (the async version) in
QDBusConnectionPrivate::sendWithReplyAsync. We weren't locking it before
send_with_reply_and_block and we apparently should. The locking around
the dbus_connection_send function might not be necessary, but let's do
it to be safe.

The lock now needs to be recursive because we may be inside
QDBusConnectionPrivate::doDispatch.

Task-number: QTBUG-42189
Change-Id: I7b6b350909359817ea8b3f9c693bced042c9779a
Reviewed-by: Jędrzej Nowacki <[email protected]>
Reviewed-by: Frederik Gladhorn <[email protected]>
(cherry picked from commit 6a2bdc4ee2dc49b5d89d09a1f255a7a0e2f18acf)
---
 src/dbus/qdbusintegrator.cpp  | 19 +++++++++++++++----
 src/dbus/qdbusthreaddebug_p.h |  3 +++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 
8f088443169ff6be013d77b149995f556196d588..03f9eef96ed160b8b6df888661d5c1bd5840047b
 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -1023,7 +1023,7 @@ extern bool qDBusInitThreads();
 
 QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
     : QObject(p), ref(1), capabilities(0), mode(InvalidMode), connection(0), 
server(0), busService(0),
-      watchAndTimeoutLock(QMutex::Recursive),
+      watchAndTimeoutLock(QMutex::Recursive), dispatchLock(QMutex::Recursive),
       rootNode(QString(QLatin1Char('/'))),
       anonymousAuthenticationAllowed(false)
 {
@@ -1272,7 +1272,10 @@ void QDBusConnectionPrivate::relaySignal(QObject *obj, 
const QMetaObject *mo, in
     //qDBusDebug() << "Emitting signal" << message;
     //qDBusDebug() << "for paths:";
     q_dbus_message_set_no_reply(msg, true); // the reply would not be 
delivered to anything
-    huntAndEmit(connection, msg, obj, rootNode, isScriptable, isAdaptor);
+    {
+        QDBusDispatchLocker locker(HuntAndEmitAction, this);
+        huntAndEmit(connection, msg, obj, rootNode, isScriptable, isAdaptor);
+    }
     q_dbus_message_unref(msg);
 }
 
@@ -1929,7 +1932,11 @@ int QDBusConnectionPrivate::send(const QDBusMessage& 
message)
 
     qDBusDebug() << this << "sending message (no reply):" << message;
     checkThread();
-    bool isOk = q_dbus_connection_send(connection, msg, 0);
+    bool isOk;
+    {
+        QDBusDispatchLocker locker(SendMessageAction, this);
+        isOk = q_dbus_connection_send(connection, msg, 0);
+    }
     int serial = 0;
     if (isOk)
         serial = q_dbus_message_get_serial(msg);
@@ -1961,7 +1968,11 @@ QDBusMessage QDBusConnectionPrivate::sendWithReply(const 
QDBusMessage &message,
 
         qDBusDebug() << this << "sending message (blocking):" << message;
         QDBusErrorInternal error;
-        DBusMessage *reply = 
q_dbus_connection_send_with_reply_and_block(connection, msg, timeout, error);
+        DBusMessage *reply;
+        {
+            QDBusDispatchLocker locker(SendWithReplyAndBlockAction, this);
+            reply = q_dbus_connection_send_with_reply_and_block(connection, 
msg, timeout, error);
+        }
 
         q_dbus_message_unref(msg);
 
diff --git a/src/dbus/qdbusthreaddebug_p.h b/src/dbus/qdbusthreaddebug_p.h
index 
f9039ef3cd3925c4484686c1d73c2c3f5499dfff..dcde99169cc15424c7cfa0acf3fd18272ef12aca
 100644
--- a/src/dbus/qdbusthreaddebug_p.h
+++ b/src/dbus/qdbusthreaddebug_p.h
@@ -94,6 +94,9 @@ enum ThreadAction {
     MessageResultReceivedAction = 26,
     ActivateSignalAction = 27,
     PendingCallBlockAction = 28,
+    SendMessageAction = 29,
+    SendWithReplyAndBlockAction = 30,
+    HuntAndEmitAction = 31,
 
     AddTimeoutAction = 50,
     RealAddTimeoutAction = 51,
-- 
2.1.2

++++++ 0003-QDBusConnection-Merge-the-dispatch-and-the-watch-and.patch ++++++
>From a006c934177263675302cd5f4ae0c3b1e35215e3 Mon Sep 17 00:00:00 2001
From: Thiago Macieira <[email protected]>
Date: Tue, 28 Oct 2014 19:26:17 -0700
Subject: [PATCH 3/4] QDBusConnection: Merge the dispatch and the
 watch-and-timeout locks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We don't need two anymore because they now protect the same thing: the
state of the DBusConnection. The difference existed when it was possible
for two threads to access the DBusConnection at the same time: one doing
dispatching and one doing something else. Unfortunately, even though
DBusConnection supports this, QtDBus doesn't.

>From d47c05b1889bb4f06203bbc65f4660b8d0128954 (2008-10-08):
   Details:  if we're removing a timer or a watcher from our list,
   there's a race condition: one thread (not the QDBusConnection thread)
   could be asking for the removal (which causes an event to be sent),
   then deletes the pointer. In the meantime, QDBusConnection will
   process the timers and socket notifiers and could end up calling
   lidbus-1 with deleted pointers.

That commit fixed the race condition but introduced a deadlock.

Task-number: QTBUG-42189
Change-Id: I034038f763cbad3a67398909defd31a23c27c965
Reviewed-by: Jędrzej Nowacki <[email protected]>
Reviewed-by: Albert Astals Cid <[email protected]>
Reviewed-by: Frederik Gladhorn <[email protected]>
(cherry picked from commit eb99c28861f5e841f306cfe8689627fe0e9bf2e8)
---
 src/dbus/qdbusconnection_p.h  | 16 +++++-----------
 src/dbus/qdbusintegrator.cpp  | 22 +++++++++++-----------
 src/dbus/qdbusthreaddebug_p.h |  7 -------
 3 files changed, 16 insertions(+), 29 deletions(-)

diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 
fd4ced078d667d966920728252d5ee55dda76ec1..a75dabeeee5c2b920fc4708f2eeefdaeb97ba32c
 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -290,24 +290,18 @@ public:
     QStringList serverConnectionNames;
 
     ConnectionMode mode;
+    QDBusConnectionInterface *busService;
 
-    // members accessed in unlocked mode (except for deletion)
-    // connection and server provide their own locking mechanisms
-    // busService doesn't have state to be changed
+    // the dispatch lock protects everything related to the DBusConnection or 
DBusServer
+    // including the timeouts and watches
+    QMutex dispatchLock;
     DBusConnection *connection;
     DBusServer *server;
-    QDBusConnectionInterface *busService;
-
-    // watchers and timeouts are accessed from any thread
-    // but the corresponding timer and QSocketNotifier must be handled
-    // only in the object's thread
-    QMutex watchAndTimeoutLock;
     WatcherHash watchers;
     TimeoutHash timeouts;
     PendingTimeoutList timeoutsPendingAdd;
 
-    // members accessed through a lock
-    QMutex dispatchLock;
+    // the master lock protects our own internal state
     QReadWriteLock lock;
     QDBusError lastError;
 
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 
03f9eef96ed160b8b6df888661d5c1bd5840047b..b396c23a1d0c1958971ce76c8b93ab43c9a18c68
 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -161,7 +161,7 @@ static dbus_bool_t qDBusAddTimeout(DBusTimeout *timeout, 
void *data)
     if (!q_dbus_timeout_get_enabled(timeout))
         return true;
 
-    QDBusWatchAndTimeoutLocker locker(AddTimeoutAction, d);
+    QDBusDispatchLocker locker(AddTimeoutAction, d);
     if (QCoreApplication::instance() && QThread::currentThread() == 
d->thread()) {
         // correct thread
         return qDBusRealAddTimeout(d, timeout, 
q_dbus_timeout_get_interval(timeout));
@@ -196,7 +196,7 @@ static void qDBusRemoveTimeout(DBusTimeout *timeout, void 
*data)
 
     QDBusConnectionPrivate *d = static_cast<QDBusConnectionPrivate *>(data);
 
-    QDBusWatchAndTimeoutLocker locker(RemoveTimeoutAction, d);
+    QDBusDispatchLocker locker(RemoveTimeoutAction, d);
 
     // is it pending addition?
     QDBusConnectionPrivate::PendingTimeoutList::iterator pit = 
d->timeoutsPendingAdd.begin();
@@ -269,7 +269,7 @@ static bool qDBusRealAddWatch(QDBusConnectionPrivate *d, 
DBusWatch *watch, int f
 {
     QDBusConnectionPrivate::Watcher watcher;
 
-    QDBusWatchAndTimeoutLocker locker(AddWatchAction, d);
+    QDBusDispatchLocker locker(AddWatchAction, d);
     if (flags & DBUS_WATCH_READABLE) {
         //qDebug("addReadWatch %d", fd);
         watcher.watch = watch;
@@ -303,7 +303,7 @@ static void qDBusRemoveWatch(DBusWatch *watch, void *data)
     QDBusConnectionPrivate *d = static_cast<QDBusConnectionPrivate *>(data);
     int fd = q_dbus_watch_get_unix_fd(watch);
 
-    QDBusWatchAndTimeoutLocker locker(RemoveWatchAction, d);
+    QDBusDispatchLocker locker(RemoveWatchAction, d);
     QDBusConnectionPrivate::WatcherHash::iterator i = d->watchers.find(fd);
     while (i != d->watchers.end() && i.key() == fd) {
         if (i.value().watch == watch) {
@@ -347,7 +347,7 @@ static void qDBusToggleWatch(DBusWatch *watch, void *data)
 
 static void qDBusRealToggleWatch(QDBusConnectionPrivate *d, DBusWatch *watch, 
int fd)
 {
-    QDBusWatchAndTimeoutLocker locker(ToggleWatchAction, d);
+    QDBusDispatchLocker locker(ToggleWatchAction, d);
 
     QDBusConnectionPrivate::WatcherHash::iterator i = d->watchers.find(fd);
     while (i != d->watchers.end() && i.key() == fd) {
@@ -1022,8 +1022,8 @@ void QDBusConnectionPrivate::deliverCall(QObject *object, 
int /*flags*/, const Q
 extern bool qDBusInitThreads();
 
 QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
-    : QObject(p), ref(1), capabilities(0), mode(InvalidMode), connection(0), 
server(0), busService(0),
-      watchAndTimeoutLock(QMutex::Recursive), dispatchLock(QMutex::Recursive),
+    : QObject(p), ref(1), capabilities(0), mode(InvalidMode), busService(0),
+      dispatchLock(QMutex::Recursive), connection(0), server(0),
       rootNode(QString(QLatin1Char('/'))),
       anonymousAuthenticationAllowed(false)
 {
@@ -1133,7 +1133,7 @@ bool QDBusConnectionPrivate::handleError(const 
QDBusErrorInternal &error)
 void QDBusConnectionPrivate::timerEvent(QTimerEvent *e)
 {
     {
-        QDBusWatchAndTimeoutLocker locker(TimerEventAction, this);
+        QDBusDispatchLocker locker(TimerEventAction, this);
         DBusTimeout *timeout = timeouts.value(e->timerId(), 0);
         if (timeout)
             q_dbus_timeout_handle(timeout);
@@ -1152,7 +1152,7 @@ void QDBusConnectionPrivate::customEvent(QEvent *e)
     switch (ev->subtype)
     {
     case QDBusConnectionCallbackEvent::AddTimeout: {
-        QDBusWatchAndTimeoutLocker locker(RealAddTimeoutAction, this);
+        QDBusDispatchLocker locker(RealAddTimeoutAction, this);
         while (!timeoutsPendingAdd.isEmpty()) {
             QPair<DBusTimeout *, int> entry = timeoutsPendingAdd.takeFirst();
             qDBusRealAddTimeout(this, entry.first, entry.second);
@@ -1188,7 +1188,7 @@ void QDBusConnectionPrivate::socketRead(int fd)
     QVarLengthArray<DBusWatch *, 2> pendingWatches;
 
     {
-        QDBusWatchAndTimeoutLocker locker(SocketReadAction, this);
+        QDBusDispatchLocker locker(SocketReadAction, this);
         WatcherHash::ConstIterator it = watchers.constFind(fd);
         while (it != watchers.constEnd() && it.key() == fd) {
             if (it->watch && it->read && it->read->isEnabled())
@@ -1208,7 +1208,7 @@ void QDBusConnectionPrivate::socketWrite(int fd)
     QVarLengthArray<DBusWatch *, 2> pendingWatches;
 
     {
-        QDBusWatchAndTimeoutLocker locker(SocketWriteAction, this);
+        QDBusDispatchLocker locker(SocketWriteAction, this);
         WatcherHash::ConstIterator it = watchers.constFind(fd);
         while (it != watchers.constEnd() && it.key() == fd) {
             if (it->watch && it->write && it->write->isEnabled())
diff --git a/src/dbus/qdbusthreaddebug_p.h b/src/dbus/qdbusthreaddebug_p.h
index 
dcde99169cc15424c7cfa0acf3fd18272ef12aca..726ab051d0739ece9d1ea623e04b39f9368464ec
 100644
--- a/src/dbus/qdbusthreaddebug_p.h
+++ b/src/dbus/qdbusthreaddebug_p.h
@@ -207,13 +207,6 @@ struct QDBusDispatchLocker: QDBusMutexLocker
     { }
 };
 
-struct QDBusWatchAndTimeoutLocker: QDBusMutexLocker
-{
-    inline QDBusWatchAndTimeoutLocker(ThreadAction a, QDBusConnectionPrivate 
*s)
-        : QDBusMutexLocker(a, s, &s->watchAndTimeoutLock)
-    { }
-};
-
 #if QDBUS_THREAD_DEBUG
 # define SEM_ACQUIRE(action, sem)                                       \
     do {                                                                \
-- 
2.1.2

++++++ 0004-Partially-revert-Fix-a-deadlock-introduced-by-the-ra.patch ++++++
>From a08d09767513ac2d6232f2d6d1cf2bc30974f632 Mon Sep 17 00:00:00 2001
From: Thiago Macieira <[email protected]>
Date: Tue, 28 Oct 2014 19:34:01 -0700
Subject: [PATCH 4/4] Partially revert "Fix a deadlock introduced by the race
 condition fix"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The commit was 9361be58f47ec256bf920c378479a02501219c1f (2008-11-17),
referring to the race condition fix that was applied in commit
d47c05b1889bb4f06203bbc65f4660b8d0128954 (2008-10-08). The fix for the
deadlock reintroduced the race condition and the commit message noted
it.

The workaround is no longer necessary since we've fixed the original race
condition differently now (see the previous two commits).

Task-number: QTBUG-42189
Change-Id: I5a83249597a83c4d4caa2ae57964ad3cc61c1d70
Reviewed-by: Jędrzej Nowacki <[email protected]>
Reviewed-by: Albert Astals Cid <[email protected]>
Reviewed-by: Frederik Gladhorn <[email protected]>
(cherry picked from commit 73a1e8c60d894701f34806cc4b847aa2814bf389)
---
 src/dbus/qdbusintegrator.cpp | 40 ++++++++++++++--------------------------
 1 file changed, 14 insertions(+), 26 deletions(-)

diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 
b396c23a1d0c1958971ce76c8b93ab43c9a18c68..c87999a48d5ad2fa39a183fe67aad8021065eb1f
 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -1185,41 +1185,29 @@ void QDBusConnectionPrivate::doDispatch()
 
 void QDBusConnectionPrivate::socketRead(int fd)
 {
-    QVarLengthArray<DBusWatch *, 2> pendingWatches;
-
-    {
-        QDBusDispatchLocker locker(SocketReadAction, this);
-        WatcherHash::ConstIterator it = watchers.constFind(fd);
-        while (it != watchers.constEnd() && it.key() == fd) {
-            if (it->watch && it->read && it->read->isEnabled())
-                pendingWatches.append(it.value().watch);
-            ++it;
+    QDBusDispatchLocker locker(SocketReadAction, this);
+    WatcherHash::ConstIterator it = watchers.constFind(fd);
+    while (it != watchers.constEnd() && it.key() == fd) {
+        if (it->watch && it->read && it->read->isEnabled()) {
+            if (!q_dbus_watch_handle(it.value().watch, DBUS_WATCH_READABLE))
+                qDebug("OUT OF MEM");
         }
+        ++it;
     }
-
-    for (int i = 0; i < pendingWatches.size(); ++i)
-        if (!q_dbus_watch_handle(pendingWatches[i], DBUS_WATCH_READABLE))
-            qDebug("OUT OF MEM");
     doDispatch();
 }
 
 void QDBusConnectionPrivate::socketWrite(int fd)
 {
-    QVarLengthArray<DBusWatch *, 2> pendingWatches;
-
-    {
-        QDBusDispatchLocker locker(SocketWriteAction, this);
-        WatcherHash::ConstIterator it = watchers.constFind(fd);
-        while (it != watchers.constEnd() && it.key() == fd) {
-            if (it->watch && it->write && it->write->isEnabled())
-                pendingWatches.append(it.value().watch);
-            ++it;
+    QDBusDispatchLocker locker(SocketWriteAction, this);
+    WatcherHash::ConstIterator it = watchers.constFind(fd);
+    while (it != watchers.constEnd() && it.key() == fd) {
+        if (it->watch && it->write && it->write->isEnabled()) {
+            if (!q_dbus_watch_handle(it.value().watch, DBUS_WATCH_WRITABLE))
+                qDebug("OUT OF MEM");
         }
+        ++it;
     }
-
-    for (int i = 0; i < pendingWatches.size(); ++i)
-        if (!q_dbus_watch_handle(pendingWatches[i], DBUS_WATCH_WRITABLE))
-            qDebug("OUT OF MEM");
 }
 
 void QDBusConnectionPrivate::objectDestroyed(QObject *obj)
-- 
2.1.2

++++++ QTBUG41590.patch ++++++
--- src/gui/kernel/qplatformintegration.cpp.orig        2014-10-21 
12:24:35.314606929 +0200
+++ src/gui/kernel/qplatformintegration.cpp     2014-10-21 12:24:45.668477488 
+0200
@@ -360,7 +360,7 @@ QVariant QPlatformIntegration::styleHint
     case PasswordMaskCharacter:
         return 
QPlatformTheme::defaultThemeHint(QPlatformTheme::PasswordMaskCharacter);
     case FontSmoothingGamma:
-        return qreal(1.7);
+        return qreal(1.4);
     case StartDragVelocity:
         return 
QPlatformTheme::defaultThemeHint(QPlatformTheme::StartDragVelocity);
     case UseRtlExtensions:

++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.8ukJ13/_old  2014-11-11 09:59:25.000000000 +0100
+++ /var/tmp/diff_new_pack.8ukJ13/_new  2014-11-11 09:59:25.000000000 +0100
@@ -60,10 +60,6 @@
 libQt5Sql-devel
        requires "libQt5Core-devel-<targettype> = <version>"
        requires "libQt5Sql5-<targettype> = <version>"
-       requires "libQt5Sql5-mysql-<targettype> = <version>"
-       requires "libQt5Sql5-postgresql-<targettype> = <version>"
-       requires "libQt5Sql5-sqlite-<targettype> = <version>"
-       requires "libQt5Sql5-unixODBC-<targettype> = <version>"
 libQt5Bootstrap-devel-static
 libQt5OpenGLExtensions-devel-static
        requires "libQt5Core-devel-<targettype> = <version>"

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to