[arch-commits] Commit in qt4/trunk (4 files)

Andreas Radke andyrtr at archlinux.org
Thu Dec 31 12:46:23 UTC 2015


    Date: Thursday, December 31, 2015 @ 13:46:23
  Author: andyrtr
Revision: 257408

upgpkg: qt4 4.8.7-6

apply fixes for LibreOffice from the upstream Qt bug tracker

Added:
  qt4/trunk/glib-honor-ExcludeSocketNotifiers-flag.diff
  qt4/trunk/l-qclipboard_delay.patch
  qt4/trunk/l-qclipboard_fix_recursive.patch
Modified:
  qt4/trunk/PKGBUILD

---------------------------------------------+
 PKGBUILD                                    |   20 ++++-
 glib-honor-ExcludeSocketNotifiers-flag.diff |   63 +++++++++++++++++
 l-qclipboard_delay.patch                    |   12 +++
 l-qclipboard_fix_recursive.patch            |   94 ++++++++++++++++++++++++++
 4 files changed, 186 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-12-31 12:01:57 UTC (rev 257407)
+++ PKGBUILD	2015-12-31 12:46:23 UTC (rev 257408)
@@ -5,7 +5,7 @@
 
 pkgname=qt4
 pkgver=4.8.7
-pkgrel=5
+pkgrel=6
 arch=('i686' 'x86_64')
 url='http://www.qt.io'
 license=('GPL3' 'LGPL' 'FDL' 'custom')
@@ -35,7 +35,10 @@
         'improve-cups-support.patch'
         'moc-boost-workaround.patch'
         'kubuntu_14_systemtrayicon.diff'
-        'kde4-settings.patch')
+        'kde4-settings.patch'
+        'glib-honor-ExcludeSocketNotifiers-flag.diff'
+        'l-qclipboard_fix_recursive.patch'
+        'l-qclipboard_delay.patch')
 md5sums=('d990ee66bf7ab0c785589776f35ba6ad'
          'a16638f4781e56e7887ff8212a322ecc'
          '8a28b3f52dbeb685d4b69440b520a3e1'
@@ -45,7 +48,10 @@
          'c439c7731c25387352d8453ca7574971'
          'da387bde22ae1c446f12525d2a31f070'
          'a523644faa8f98a73f55c4aa23c114a6'
-         '66dfea63916c8dbf47b23cb012ffdccc')
+         '66dfea63916c8dbf47b23cb012ffdccc'
+         '85679531c8a7310317adfb7002d9f99a'
+         '009de09b4e589a7770fba74405656c99'
+         'addc5e88d538ee55e17bd49ba337ca67')
 
 prepare() {
   cd ${_pkgfqn}
@@ -62,6 +68,14 @@
   # FS#45106
   patch -p0 -i "${srcdir}"/kde4-settings.patch
 
+  # fixes for LibreOffice from the upstream Qt bug tracker FS#46436, FS#41648, FS#39819
+  # https://bugreports.qt.io/browse/QTBUG-37380
+  patch -p1 -i "${srcdir}"/glib-honor-ExcludeSocketNotifiers-flag.diff
+  # https://bugreports.qt.io/browse/QTBUG-34614
+  patch -p0 -i "${srcdir}"/l-qclipboard_fix_recursive.patch
+  # https://bugreports.qt.io/browse/QTBUG-38585
+  patch -p0 -i "${srcdir}"/l-qclipboard_delay.patch
+
   sed -i "s|-O2|${CXXFLAGS}|" mkspecs/common/{g++,gcc}-base.conf
   sed -i "/^QMAKE_LFLAGS_RPATH/s| -Wl,-rpath,||g" mkspecs/common/gcc-base-unix.conf
   sed -i "/^QMAKE_LFLAGS\s/s|+=|+= ${LDFLAGS}|g" mkspecs/common/gcc-base.conf

Added: glib-honor-ExcludeSocketNotifiers-flag.diff
===================================================================
--- glib-honor-ExcludeSocketNotifiers-flag.diff	                        (rev 0)
+++ glib-honor-ExcludeSocketNotifiers-flag.diff	2015-12-31 12:46:23 UTC (rev 257408)
@@ -0,0 +1,63 @@
+Author: Jan-Marek Glogowski <glogow at fbihome.de>
+Date:   Thu Mar 06 18:44:43 2014 +0100
+
+    Honor QEventLoop::ExcludeSocketNotifiers in glib event loop.
+    
+    Implements QEventLoop::ExcludeSocketNotifiers in the same way 
+    QEventLoop::X11ExcludeTimers is already implemented for the glib
+    event loop.
+
+--- qt4-x11-4.8.1.orig/src/corelib/kernel/qeventdispatcher_glib.cpp
++++ qt4-x11-4.8.1/src/corelib/kernel/qeventdispatcher_glib.cpp
+@@ -65,6 +65,7 @@ struct GPollFDWithQSocketNotifier
+ struct GSocketNotifierSource
+ {
+     GSource source;
++    QEventLoop::ProcessEventsFlags processEventsFlags;
+     QList<GPollFDWithQSocketNotifier *> pollfds;
+ };
+ 
+@@ -80,6 +81,9 @@ static gboolean socketNotifierSourceChec
+     GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source);
+ 
+     bool pending = false;
++    if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers)
++        return pending;
++
+     for (int i = 0; !pending && i < src->pollfds.count(); ++i) {
+         GPollFDWithQSocketNotifier *p = src->pollfds.at(i);
+ 
+@@ -103,6 +107,9 @@ static gboolean socketNotifierSourceDisp
+     QEvent event(QEvent::SockAct);
+ 
+     GSocketNotifierSource *src = reinterpret_cast<GSocketNotifierSource *>(source);
++    if (src->processEventsFlags & QEventLoop::ExcludeSocketNotifiers)
++        return true;
++
+     for (int i = 0; i < src->pollfds.count(); ++i) {
+         GPollFDWithQSocketNotifier *p = src->pollfds.at(i);
+ 
+@@ -330,6 +337,7 @@ QEventDispatcherGlibPrivate::QEventDispa
+         reinterpret_cast<GSocketNotifierSource *>(g_source_new(&socketNotifierSourceFuncs,
+                                                                sizeof(GSocketNotifierSource)));
+     (void) new (&socketNotifierSource->pollfds) QList<GPollFDWithQSocketNotifier *>();
++    socketNotifierSource->processEventsFlags = QEventLoop::AllEvents;
+     g_source_set_can_recurse(&socketNotifierSource->source, true);
+     g_source_attach(&socketNotifierSource->source, mainContext);
+ 
+@@ -415,6 +423,7 @@ bool QEventDispatcherGlib::processEvents
+     // tell postEventSourcePrepare() and timerSource about any new flags
+     QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags;
+     d->timerSource->processEventsFlags = flags;
++    d->socketNotifierSource->processEventsFlags = flags;
+ 
+     if (!(flags & QEventLoop::EventLoopExec)) {
+         // force timers to be sent at normal priority
+@@ -426,6 +435,7 @@ bool QEventDispatcherGlib::processEvents
+         result = g_main_context_iteration(d->mainContext, canWait);
+ 
+     d->timerSource->processEventsFlags = savedFlags;
++    d->socketNotifierSource->processEventsFlags = savedFlags;
+ 
+     if (canWait)
+         emit awake();

Added: l-qclipboard_delay.patch
===================================================================
--- l-qclipboard_delay.patch	                        (rev 0)
+++ l-qclipboard_delay.patch	2015-12-31 12:46:23 UTC (rev 257408)
@@ -0,0 +1,12 @@
+--- src/gui/kernel/qclipboard_x11.cpp.sav	2014-04-25 09:52:03.855693228 +0200
++++ src/gui/kernel/qclipboard_x11.cpp	2014-04-25 09:51:58.038693777 +0200
+@@ -548,7 +548,8 @@ bool QX11Data::clipboardWaitForEvent(Win
+                 return false;
+ 
+             XSync(X11->display, false);
+-            usleep(50000);
++            if (!XPending(X11->display))
++                usleep(5000);
+ 
+             now.start();
+ 

Added: l-qclipboard_fix_recursive.patch
===================================================================
--- l-qclipboard_fix_recursive.patch	                        (rev 0)
+++ l-qclipboard_fix_recursive.patch	2015-12-31 12:46:23 UTC (rev 257408)
@@ -0,0 +1,94 @@
+--- src/corelib/kernel/qeventdispatcher_glib.cpp.sav	2014-03-28 15:26:37.000000000 +0100
++++ src/corelib/kernel/qeventdispatcher_glib.cpp	2014-04-24 09:44:09.358659204 +0200
+@@ -255,22 +255,30 @@ struct GPostEventSource
+     GSource source;
+     QAtomicInt serialNumber;
+     int lastSerialNumber;
++    QEventLoop::ProcessEventsFlags processEventsFlags;
+     QEventDispatcherGlibPrivate *d;
+ };
+ 
+ static gboolean postEventSourcePrepare(GSource *s, gint *timeout)
+ {
++    GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
+     QThreadData *data = QThreadData::current();
+     if (!data)
+         return false;
+ 
++    QEventLoop::ProcessEventsFlags excludeAllFlags
++        = QEventLoop::ExcludeUserInputEvents
++        | QEventLoop::ExcludeSocketNotifiers
++        | QEventLoop::X11ExcludeTimers;
++    if ((source->processEventsFlags & excludeAllFlags) == excludeAllFlags)
++        return false;
++
+     gint dummy;
+     if (!timeout)
+         timeout = &dummy;
+     const bool canWait = data->canWaitLocked();
+     *timeout = canWait ? -1 : 0;
+ 
+-    GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
+     return (!canWait
+             || (source->serialNumber != source->lastSerialNumber));
+ }
+@@ -284,8 +292,14 @@ static gboolean postEventSourceDispatch(
+ {
+     GPostEventSource *source = reinterpret_cast<GPostEventSource *>(s);
+     source->lastSerialNumber = source->serialNumber;
+-    QCoreApplication::sendPostedEvents();
+-    source->d->runTimersOnceWithNormalPriority();
++    QEventLoop::ProcessEventsFlags excludeAllFlags
++        = QEventLoop::ExcludeUserInputEvents
++        | QEventLoop::ExcludeSocketNotifiers
++        | QEventLoop::X11ExcludeTimers;
++    if ((source->processEventsFlags & excludeAllFlags) != excludeAllFlags) {
++        QCoreApplication::sendPostedEvents();
++        source->d->runTimersOnceWithNormalPriority();
++    }
+     return true; // i dunno, george...
+ }
+ 
+@@ -329,6 +343,7 @@ QEventDispatcherGlibPrivate::QEventDispa
+     postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs,
+                                                                         sizeof(GPostEventSource)));
+     postEventSource->serialNumber = 1;
++    postEventSource->processEventsFlags = QEventLoop::AllEvents;
+     postEventSource->d = this;
+     g_source_set_can_recurse(&postEventSource->source, true);
+     g_source_attach(&postEventSource->source, mainContext);
+@@ -423,6 +438,7 @@ bool QEventDispatcherGlib::processEvents
+ 
+     // tell postEventSourcePrepare() and timerSource about any new flags
+     QEventLoop::ProcessEventsFlags savedFlags = d->timerSource->processEventsFlags;
++    d->postEventSource->processEventsFlags = flags;
+     d->timerSource->processEventsFlags = flags;
+     d->socketNotifierSource->processEventsFlags = flags;
+ 
+@@ -435,6 +451,7 @@ bool QEventDispatcherGlib::processEvents
+     while (!result && canWait)
+         result = g_main_context_iteration(d->mainContext, canWait);
+ 
++    d->postEventSource->processEventsFlags = savedFlags;
+     d->timerSource->processEventsFlags = savedFlags;
+     d->socketNotifierSource->processEventsFlags = savedFlags;
+ 
+--- src/corelib/kernel/qeventdispatcher_unix.cpp.sav	2013-06-07 07:16:52.000000000 +0200
++++ src/corelib/kernel/qeventdispatcher_unix.cpp	2014-04-24 09:43:06.927589535 +0200
+@@ -905,7 +905,15 @@ bool QEventDispatcherUNIX::processEvents
+ 
+     // we are awake, broadcast it
+     emit awake();
+-    QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
++
++    QEventLoop::ProcessEventsFlags excludeAllFlags
++        = QEventLoop::ExcludeUserInputEvents
++        | QEventLoop::ExcludeSocketNotifiers
++        | QEventLoop::X11ExcludeTimers;
++    if ((flags & excludeAllFlags) == excludeAllFlags)
++        return false;
++    if(( flags & excludeAllFlags ) != excludeAllFlags )
++        QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
+ 
+     int nevents = 0;
+     const bool canWait = (d->threadData->canWaitLocked()



More information about the arch-commits mailing list