summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index 3282b7c..2f38a95 100644
--- a/src/corelib/kernel/qeventdispatcher_symbian.cpp
+++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp
@@ -299,6 +299,9 @@ void QSelectThread::run()
// ones that return -1 in select
// after loop update notifiers for all of them
+ // as we dont have "exception" notifier type
+ // we should force monitoring fd_set of this
+ // type as well
// clean @ start
FD_ZERO(&readfds);
@@ -311,6 +314,11 @@ void QSelectThread::run()
fd_set onefds;
FD_ZERO(&onefds);
FD_SET(i.key()->socket(), &onefds);
+
+ fd_set excfds;
+ FD_ZERO(&excfds);
+ FD_SET(i.key()->socket(), &excfds);
+
maxfd = i.key()->socket() + 1;
struct timeval timeout;
@@ -320,14 +328,11 @@ void QSelectThread::run()
ret = 0;
if(i.key()->type() == QSocketNotifier::Read) {
- ret = ::select(maxfd, &onefds, 0, 0, &timeout);
+ ret = ::select(maxfd, &onefds, 0, &excfds, &timeout);
if(ret != 0) FD_SET(i.key()->socket(), &readfds);
} else if(i.key()->type() == QSocketNotifier::Write) {
- ret = ::select(maxfd, 0, &onefds, 0, &timeout);
+ ret = ::select(maxfd, 0, &onefds, &excfds, &timeout);
if(ret != 0) FD_SET(i.key()->socket(), &writefds);
- } else { // must be exception fds then
- ret = ::select(maxfd, 0, 0, &onefds, &timeout);
- if(ret != 0) FD_SET(i.key()->socket(), &exceptionfds);
}
} // end for