summaryrefslogtreecommitdiffstats
path: root/abs/core/qt4/glib-honor-ExcludeSocketNotifiers-flag.diff
diff options
context:
space:
mode:
authorBritney Fransen <brfransen@gmail.com>2016-05-16 16:24:28 (GMT)
committerBritney Fransen <brfransen@gmail.com>2016-05-16 16:24:28 (GMT)
commitfff4c50d3a1d94c807604d6c21355993dfb95c85 (patch)
tree390f0eb0781b2599449edbdafbeb6aaba34200dc /abs/core/qt4/glib-honor-ExcludeSocketNotifiers-flag.diff
parent8de064f6e96f960cdbfe6868d9957a4613f704df (diff)
parent6f7a84649ef75069cc4fa06fabeb63e762e049d1 (diff)
downloadlinhes_pkgbuild-fff4c50d3a1d94c807604d6c21355993dfb95c85.zip
linhes_pkgbuild-fff4c50d3a1d94c807604d6c21355993dfb95c85.tar.gz
linhes_pkgbuild-fff4c50d3a1d94c807604d6c21355993dfb95c85.tar.bz2
Merge branch 'testing'
Diffstat (limited to 'abs/core/qt4/glib-honor-ExcludeSocketNotifiers-flag.diff')
-rw-r--r--abs/core/qt4/glib-honor-ExcludeSocketNotifiers-flag.diff63
1 files changed, 63 insertions, 0 deletions
diff --git a/abs/core/qt4/glib-honor-ExcludeSocketNotifiers-flag.diff b/abs/core/qt4/glib-honor-ExcludeSocketNotifiers-flag.diff
new file mode 100644
index 0000000..6949bbf
--- /dev/null
+++ b/abs/core/qt4/glib-honor-ExcludeSocketNotifiers-flag.diff
@@ -0,0 +1,63 @@
+Author: Jan-Marek Glogowski <glogow@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();