summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kernel/tqeventloop_x11.cpp8
-rw-r--r--src/kernel/tqeventloop_x11_glib.cpp21
2 files changed, 19 insertions, 10 deletions
diff --git a/src/kernel/tqeventloop_x11.cpp b/src/kernel/tqeventloop_x11.cpp
index 8a2edf804..09fc42e82 100644
--- a/src/kernel/tqeventloop_x11.cpp
+++ b/src/kernel/tqeventloop_x11.cpp
@@ -231,8 +231,11 @@ bool TQEventLoop::processEvents( ProcessEventsFlags flags )
}
}
+ // 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.
int highest = 0;
- if ( ! ( flags & ExcludeSocketNotifiers ) ) {
+ if (!(flags & ExcludeSocketNotifiers) && TQApplication::isGuiThread()) {
// return the highest fd we can wait for input on
if ( d->sn_highest >= 0 ) { // has socket notifier(s)
if ( d->sn_vec[0].list && ! d->sn_vec[0].list->isEmpty() )
@@ -370,7 +373,8 @@ bool TQEventLoop::processEvents( ProcessEventsFlags flags )
}
// activate socket notifiers
- if ( ! ( flags & ExcludeSocketNotifiers ) && nsel > 0 && d->sn_highest >= 0 ) {
+ if (!(flags & ExcludeSocketNotifiers) && nsel > 0 && d->sn_highest >= 0 &&
+ TQApplication::isGuiThread()) {
// if select says data is ready on any socket, then set the socket notifier
// to pending
int i;
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