summaryrefslogtreecommitdiffstats
path: root/src/kernel/tqeventloop_x11_glib.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2025-06-16 18:37:59 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2025-06-16 18:52:34 +0900
commit2584dba8aabfa2db8297dcfa258d33545ed6af43 (patch)
treebe8b024cd0ba58c17a0dfc4a90ec0932c35a5543 /src/kernel/tqeventloop_x11_glib.cpp
parente190684fba08e3189cc8c2c4221823b17a9d48be (diff)
downloadtqt-2584dba8aabfa2db8297dcfa258d33545ed6af43.tar.gz
tqt-2584dba8aabfa2db8297dcfa258d33545ed6af43.zip
Fix handling of socket notifier events in gmainloop functions.
This resolves issue #231. Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'src/kernel/tqeventloop_x11_glib.cpp')
-rw-r--r--src/kernel/tqeventloop_x11_glib.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/kernel/tqeventloop_x11_glib.cpp b/src/kernel/tqeventloop_x11_glib.cpp
index 9d18d1073..ba638aac9 100644
--- a/src/kernel/tqeventloop_x11_glib.cpp
+++ b/src/kernel/tqeventloop_x11_glib.cpp
@@ -419,8 +419,10 @@ bool TQEventLoop::gsourcePrepare(GSource *gs, int * timeout)
}
}
- // include or exclude SocketNotifiers (by setting or cleaning poll events)
- if ( ! ( flags & ExcludeSocketNotifiers ) ) {
+ // Include or exclude SocketNotifiers (by setting or cleaning poll events)
+ // Socket notifier events are only activated in the core application event loop,
+ // so filter them out in other event loops.
+ if (!(flags & ExcludeSocketNotifiers) && TQApplication::isGuiThread()) {
TQPtrListIterator<TQSockNotGPollFD> it( d->sn_list );
TQSockNotGPollFD *sn;
while ( (sn=it.current()) ) {
@@ -491,17 +493,20 @@ bool TQEventLoop::gsourceCheck(GSource *gs) {
printf("inside gsourceCheck(1)\n");
#endif
+ ProcessEventsFlags flags = d->pev_flags;
+
// Socketnotifier events?
- TQPtrList<TQSockNotGPollFD> *list = &d->sn_list;
- //if ( list ) {
- TQSockNotGPollFD *sn = list->first();
- while ( sn ) {
+ if (!(flags & ExcludeSocketNotifiers) && TQApplication::isGuiThread())
+ {
+ TQPtrListIterator<TQSockNotGPollFD> it( d->sn_list );
+ TQSockNotGPollFD *sn;
+ while ( (sn=it.current()) ) {
+ ++it;
if ( sn->gPollFD.revents ) {
return TRUE;
}
- sn = list->next();
}
- //}
+ }
if (d->x_gPollFD.revents) {
#ifdef DEBUG_QT_GLIBMAINLOOP