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 Dmitry A. Kuminov, 15 years ago

Owner: set to Dmitry A. Kuminov
Status: newaccepted

comment:2 by Dmitry A. Kuminov, 15 years ago

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.

comment:3 by Dmitry A. Kuminov, 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 Dmitry A. Kuminov, 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 Dmitry A. Kuminov, 15 years ago

Resolution: fixed
Status: acceptedclosed

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).

Note: See TracTickets for help on using tickets.