[Oberon] Message queue and Pointer

Thomas Frey thomas.frey at alumni.ethz.ch
Wed May 10 13:17:35 CEST 2006

Hi Dan,

First, the application you have created is very impressive.
To your problem, my first guess is an interleaving of mouse move
messages and invalidate requests that prevents the mouse messages from
being merged (as they normally are if there is no interleaving message
in the queue).
What you could try is to add a dump routine in the sequencer object in
WMMessages. When a message has to be thrown away the first time (in
the method where it is queued), the dump could go through the queue of
messages and write the message types to a log. (Make sure to only do
this the first time it happens or the first time after a recovered
message, since the trace output would be enormous and would not bring
more insight than the first dump)


On 5/10/06, Dan Parnete <dan.parnete at fastwebnet.it> wrote:
> Hello,
>     As exposed in a previous issue "Bluebottle limits reached" we have
> grow the message queue size. This solved the lose of messages, but in a
> particular situation it puts in evidence a big number of useless
> messages that arrives to subcomponents, spending to much processor time.
>     To observe this you need to use the framework, or better an
> application I use for test and development. It is more evident using a
> Windows client, witch is slower a has the message queue enlarged, the in
> Bluebottle witch is faster and with it's 128 queue discard
> (providentially) most of the useless messages. You have to download the
> BBwClient from and extract it somewhere. Execute
> Aos.exe and at the login window write:
>     Application:
>     Database: DanDb
>     User: public
>     Password: user
> At the first time a modules upgrade will be done, and then exits. You
> have to reenter. Then go to Setup/Admin to enter the IDE (development
> system). Here pressing ctrl-o will open the Kernel Log. Then open
> FORMS/Clienti for example. Make a multi selection with ML and drag over
> some fields. Then ML a selected one and drag around to move them.
> Release the mouse and then click somewhere on the form, out of the any
> field. Repeat that click until selected fields are unselected.
> You can move selected fields not only by mouse drag (5 pixel grid step)
> but even with the arrow keys (1 pixel).
> Observations:
> 1. During this moving operation a lot of messages are fired. It depends
> on the number of fields selected. If all useful messages are executed in
> reasonable time, what kind of messages are still on the queue and create
> this latency?
> 2. What happens with the pointer massages during this latency? As you
> can see on the log, even if the mouse points on the form, the control
> witch receive the PointerDown is a label/field (Label PD), and finally
> when all message queues have finished their activities, the form
> receives it (Form PD). Very strange. Haw could be explained?
> P.S.: If you will see a "User or password unknown" during the use of the
> application, means another connection with the same user has been done
> after you. Only one connection with a user name is admitted.
> Thank you,
> Dan Parnete
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon

More information about the Oberon mailing list