Opened 15 years ago
Closed 15 years ago
#24 closed enhancement (fixed)
Complete QEventDispatcher
Reported by: | Dmitry A. Kuminov | Owned by: | Dmitry A. Kuminov |
---|---|---|---|
Priority: | major | Milestone: | QtGui Beta |
Component: | QtCore | Version: | 4.5.1 Beta 1 |
Severity: | Keywords: | ||
Cc: |
Description
The basics of QEventDispatcher are done within #9. This task is about adding timer and socket notifier support as well as constructing the proper PM message processing loop.
Change History (5)
comment:1 by , 15 years ago
Owner: | set to |
---|---|
Status: | new → accepted |
comment:2 by , 15 years ago
comment:3 by , 15 years ago
As for timers, we will give up the PM timer implementation (WinStartTimer and friends) because Qt3 for OS/2 showed that PM timers are unreliable: there are only a few (literally, a couple dozens) global PM timers shared by all applications. As a result, a running Qt3 application (which may use many timers by design) could screw up other PM applications (including the Presentation Manager itself!) since they seemed to not expect at all that the system could run out of free timers and didn't provide any meaningful execution path in case of a failure to start a timer which could in turn lead to a crash/hang/freeze or just misbehavior.
For this reason, we will provide our own timer implementation (partly based on the UNIX version of QEventDispatcher) which will be served by the same helper thread that does asynchronous socket selects.
comment:4 by , 15 years ago
Done timers in r84. Note that the Unix implementation was seriously tailored to our conditions and slightly optimized; moreover, I'll probably replace the timeval stuff with the native OS/2 tick API later (which will additionally remove some more non-perfect code).
The next thing is the message loop.
comment:5 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
The processing of the message loop is done in r85. The only thing left in is bug fixing.
To proceed further, we need QWidget (surprise :). So it will be the next major task (not yet sure in which order with other milestone defects though).
Implemented socket notifiers using libc select() in r83. As opposed to Qt3 where only one event loop is "officially" supported, Qt4 allows for multiple independent event loops on different threads. The given socket implementation is done to support that too.
Timers are next.